From 3c89d6ca3ce103d17ca3bd1a9102274d63d32b87 Mon Sep 17 00:00:00 2001 From: Alec Henninger Date: Sun, 5 Apr 2015 15:04:07 -0400 Subject: [PATCH 1/3] Update dependencies --- data-mgmt/bower.json | 16 +- .../angular-animate/.bower.json | 19 - .../angular-animate/README.md | 77 - .../angular-animate/angular-animate.js | 2138 -- .../angular-animate/angular-animate.min.js | 33 - .../angular-animate.min.js.map | 8 - .../angular-animate/bower.json | 9 - .../bower_components/angular-animate/index.js | 3 - .../angular-animate/package.json | 25 - .../angular-mocks/.bower.json | 15 +- .../bower_components/angular-mocks/README.md | 16 +- .../angular-mocks/angular-mocks.js | 150 +- .../bower_components/angular-mocks/bower.json | 4 +- .../angular-mocks/ngAnimateMock.js | 2 + .../bower_components/angular-mocks/ngMock.js | 2 + .../angular-mocks/ngMockE2E.js | 2 + .../angular-mocks/package.json | 2 +- .../angular-motion/.bower.json | 52 - .../angular-motion/.editorconfig | 13 - .../angular-motion/.gitignore | 11 - .../bower_components/angular-motion/.jshintrc | 28 - .../angular-motion/.travis.yml | 15 - .../angular-motion/Gruntfile.js | 475 - .../angular-motion/LICENSE.md | 21 - .../bower_components/angular-motion/README.md | 95 - .../angular-motion/bower.json | 43 - .../angular-motion/dist/angular-motion.css | 1026 - .../dist/angular-motion.min.css | 8 - .../angular-motion/dist/modules/collapse.css | 90 - .../dist/modules/collapse.min.css | 8 - .../dist/modules/fade-and-scale.css | 90 - .../dist/modules/fade-and-scale.min.css | 8 - .../dist/modules/fade-and-slide.css | 333 - .../dist/modules/fade-and-slide.min.css | 8 - .../angular-motion/dist/modules/fade.css | 99 - .../angular-motion/dist/modules/fade.min.css | 8 - .../angular-motion/dist/modules/flip.css | 177 - .../angular-motion/dist/modules/flip.min.css | 8 - .../angular-motion/dist/modules/slide.css | 267 - .../angular-motion/dist/modules/slide.min.css | 8 - .../angular-motion/package.json | 57 - .../angular-motion/src/collapse/collapse.less | 80 - .../src/fade-and-scale/fade-and-scale.less | 62 - .../src/fade-and-slide/fade-and-slide.less | 218 - .../angular-motion/src/fade/fade.less | 93 - .../angular-motion/src/flip/flip.less | 113 - .../angular-motion/src/slide/slide.less | 184 - .../angular-route/.bower.json | 12 +- .../bower_components/angular-route/README.md | 13 +- .../angular-route/angular-route.js | 19 +- .../angular-route/angular-route.min.js | 20 +- .../angular-route/angular-route.min.js.map | 4 +- .../bower_components/angular-route/bower.json | 4 +- .../bower_components/angular-route/index.js | 2 + .../angular-route/package.json | 4 +- .../angular-sanitize/.bower.json | 12 +- .../angular-sanitize/README.md | 13 +- .../angular-sanitize/angular-sanitize.js | 63 +- .../angular-sanitize/angular-sanitize.min.js | 20 +- .../angular-sanitize.min.js.map | 4 +- .../angular-sanitize/bower.json | 4 +- .../angular-sanitize/index.js | 2 + .../angular-sanitize/package.json | 4 +- .../angular-strap/.bower.json | 63 - .../bower_components/angular-strap/.bowerrc | 3 - .../angular-strap/.editorconfig | 21 - .../angular-strap/.gitattributes | 1 - .../bower_components/angular-strap/.gitignore | 13 - .../bower_components/angular-strap/.jshintrc | 28 - .../bower_components/angular-strap/.npmignore | 0 .../angular-strap/.travis.yml | 32 - .../bower_components/angular-strap/LICENSE.md | 21 - .../bower_components/angular-strap/README.md | 112 - .../angular-strap/angular-strap.nuspec | 22 - .../bower_components/angular-strap/bower.json | 53 - .../angular-strap/dist/angular-strap.js | 5014 --- .../angular-strap/dist/angular-strap.min.js | 11 - .../dist/angular-strap.min.js.map | 1 - .../angular-strap/dist/angular-strap.tpl.js | 89 - .../dist/angular-strap.tpl.min.js | 8 - .../angular-strap/dist/modules/affix.js | 249 - .../angular-strap/dist/modules/affix.min.js | 9 - .../dist/modules/affix.min.js.map | 1 - .../angular-strap/dist/modules/alert.js | 120 - .../angular-strap/dist/modules/alert.min.js | 9 - .../dist/modules/alert.min.js.map | 1 - .../angular-strap/dist/modules/alert.tpl.js | 14 - .../dist/modules/alert.tpl.min.js | 8 - .../angular-strap/dist/modules/aside.js | 96 - .../angular-strap/dist/modules/aside.min.js | 9 - .../dist/modules/aside.min.js.map | 1 - .../angular-strap/dist/modules/aside.tpl.js | 14 - .../dist/modules/aside.tpl.min.js | 8 - .../angular-strap/dist/modules/button.js | 177 - .../angular-strap/dist/modules/button.min.js | 9 - .../dist/modules/button.min.js.map | 1 - .../angular-strap/dist/modules/collapse.js | 273 - .../dist/modules/collapse.min.js | 9 - .../dist/modules/collapse.min.js.map | 1 - .../dist/modules/date-formatter.js | 61 - .../dist/modules/date-formatter.min.js | 9 - .../dist/modules/date-formatter.min.js.map | 1 - .../angular-strap/dist/modules/date-parser.js | 273 - .../dist/modules/date-parser.min.js | 9 - .../dist/modules/date-parser.min.js.map | 1 - .../angular-strap/dist/modules/datepicker.js | 640 - .../dist/modules/datepicker.min.js | 9 - .../dist/modules/datepicker.min.js.map | 1 - .../dist/modules/datepicker.tpl.js | 14 - .../dist/modules/datepicker.tpl.min.js | 8 - .../angular-strap/dist/modules/debounce.js | 62 - .../dist/modules/debounce.min.js | 9 - .../dist/modules/debounce.min.js.map | 1 - .../angular-strap/dist/modules/dimensions.js | 156 - .../dist/modules/dimensions.min.js | 9 - .../dist/modules/dimensions.min.js.map | 1 - .../angular-strap/dist/modules/dropdown.js | 149 - .../dist/modules/dropdown.min.js | 9 - .../dist/modules/dropdown.min.js.map | 1 - .../dist/modules/dropdown.tpl.js | 14 - .../dist/modules/dropdown.tpl.min.js | 8 - .../angular-strap/dist/modules/modal.js | 349 - .../angular-strap/dist/modules/modal.min.js | 9 - .../dist/modules/modal.min.js.map | 1 - .../angular-strap/dist/modules/modal.tpl.js | 14 - .../dist/modules/modal.tpl.min.js | 8 - .../angular-strap/dist/modules/navbar.js | 72 - .../angular-strap/dist/modules/navbar.min.js | 9 - .../dist/modules/navbar.min.js.map | 1 - .../dist/modules/parse-options.js | 76 - .../dist/modules/parse-options.min.js | 9 - .../dist/modules/parse-options.min.js.map | 1 - .../angular-strap/dist/modules/popover.js | 112 - .../angular-strap/dist/modules/popover.min.js | 9 - .../dist/modules/popover.min.js.map | 1 - .../angular-strap/dist/modules/popover.tpl.js | 14 - .../dist/modules/popover.tpl.min.js | 8 - .../angular-strap/dist/modules/raf.js | 61 - .../angular-strap/dist/modules/raf.min.js | 9 - .../angular-strap/dist/modules/raf.min.js.map | 1 - .../angular-strap/dist/modules/scrollspy.js | 261 - .../dist/modules/scrollspy.min.js | 9 - .../dist/modules/scrollspy.min.js.map | 1 - .../angular-strap/dist/modules/select.js | 325 - .../angular-strap/dist/modules/select.min.js | 9 - .../dist/modules/select.min.js.map | 1 - .../angular-strap/dist/modules/select.tpl.js | 14 - .../dist/modules/select.tpl.min.js | 8 - .../angular-strap/dist/modules/tab.js | 186 - .../angular-strap/dist/modules/tab.min.js | 9 - .../angular-strap/dist/modules/tab.min.js.map | 1 - .../angular-strap/dist/modules/tab.tpl.js | 14 - .../angular-strap/dist/modules/tab.tpl.min.js | 8 - .../angular-strap/dist/modules/timepicker.js | 485 - .../dist/modules/timepicker.min.js | 9 - .../dist/modules/timepicker.min.js.map | 1 - .../dist/modules/timepicker.tpl.js | 14 - .../dist/modules/timepicker.tpl.min.js | 8 - .../angular-strap/dist/modules/tooltip.js | 690 - .../angular-strap/dist/modules/tooltip.min.js | 9 - .../dist/modules/tooltip.min.js.map | 1 - .../angular-strap/dist/modules/tooltip.tpl.js | 14 - .../dist/modules/tooltip.tpl.min.js | 8 - .../angular-strap/dist/modules/typeahead.js | 266 - .../dist/modules/typeahead.min.js | 9 - .../dist/modules/typeahead.min.js.map | 1 - .../dist/modules/typeahead.tpl.js | 14 - .../dist/modules/typeahead.tpl.min.js | 8 - .../angular-strap/gulpfile.js | 489 - .../angular-strap/package.json | 72 - .../angular-strap/src/affix/affix.js | 242 - .../angular-strap/src/alert/alert.js | 113 - .../angular-strap/src/alert/alert.tpl.html | 4 - .../angular-strap/src/aside/aside.js | 89 - .../angular-strap/src/aside/aside.tpl.html | 14 - .../angular-strap/src/button/button.js | 170 - .../angular-strap/src/collapse/collapse.js | 266 - .../src/datepicker/datepicker.js | 633 - .../src/datepicker/datepicker.tpl.html | 33 - .../angular-strap/src/dropdown/dropdown.js | 142 - .../src/dropdown/dropdown.tpl.html | 6 - .../src/helpers/date-formatter.js | 54 - .../angular-strap/src/helpers/date-parser.js | 266 - .../angular-strap/src/helpers/debounce.js | 55 - .../angular-strap/src/helpers/dimensions.js | 149 - .../src/helpers/parse-options.js | 69 - .../angular-strap/src/helpers/raf.js | 54 - .../angular-strap/src/modal/modal.js | 342 - .../angular-strap/src/modal/modal.tpl.html | 14 - .../angular-strap/src/module.js | 19 - .../angular-strap/src/navbar/navbar.js | 65 - .../angular-strap/src/popover/popover.js | 105 - .../src/popover/popover.tpl.html | 5 - .../angular-strap/src/scrollspy/scrollspy.js | 254 - .../angular-strap/src/select/select.js | 318 - .../angular-strap/src/select/select.tpl.html | 14 - .../angular-strap/src/tab/tab.js | 179 - .../angular-strap/src/tab/tab.tpl.html | 7 - .../src/timepicker/timepicker.js | 478 - .../src/timepicker/timepicker.tpl.html | 62 - .../angular-strap/src/tooltip/tooltip.js | 683 - .../src/tooltip/tooltip.tpl.html | 4 - .../angular-strap/src/typeahead/typeahead.js | 259 - .../src/typeahead/typeahead.tpl.html | 5 - .../angular-ui-bootstrap-bower/.bower.json | 31 + .../angular-ui-bootstrap-bower/bower.json | 19 + .../ui-bootstrap-tpls.js | 4211 +++ .../ui-bootstrap-tpls.min.js | 10 + .../ui-bootstrap.js | 3900 +++ .../ui-bootstrap.min.js | 9 + .../angular-ui-select/.bower.json | 10 +- .../angular-ui-select/README.md | 134 +- .../angular-ui-select/bower.json | 2 +- .../angular-ui-select/dist/select.css | 66 +- .../angular-ui-select/dist/select.js | 2218 +- .../angular-ui-select/dist/select.min.css | 4 +- .../angular-ui-select/dist/select.min.js | 5 +- .../angular-ui-select/package.json | 3 +- .../bower_components/angular/.bower.json | 10 +- .../webapp/bower_components/angular/README.md | 7 +- .../bower_components/angular/angular.js | 8046 ++--- .../bower_components/angular/angular.min.js | 491 +- .../angular/angular.min.js.gzip | Bin 45769 -> 50407 bytes .../angular/angular.min.js.map | 6 +- .../bower_components/angular/bower.json | 2 +- .../webapp/bower_components/angular/index.js | 2 + .../bower_components/angular/package.json | 4 +- .../bower_components/jsoneditor/.bower.json | 26 +- .../jsoneditor/CONTRIBUTING.md | 17 + .../bower_components/jsoneditor/HISTORY.md | 47 + .../webapp/bower_components/jsoneditor/NOTICE | 2 +- .../bower_components/jsoneditor/README.md | 43 +- .../jsoneditor/asset/ace/ace.js | 148 - .../jsoneditor/asset/ace/ext-searchbox.js | 1 - .../jsoneditor/asset/ace/mode-json.js | 1 - .../jsoneditor/asset/ace/theme-textmate.js | 1 - .../jsoneditor/asset/ace/worker-json.js | 1 - .../jsoneditor/asset/jsonlint/jsonlint.js | 1 - .../bower_components/jsoneditor/bower.json | 15 +- .../{ => dist}/img/jsoneditor-icons.png | Bin .../jsoneditor/{ => dist}/jsoneditor.css | 3 + .../jsoneditor/dist/jsoneditor.js | 26300 ++++++++++++++++ .../jsoneditor/dist/jsoneditor.map | 1 + .../jsoneditor/dist/jsoneditor.min.css | 1 + .../jsoneditor/dist/jsoneditor.min.js | 50 + .../bower_components/jsoneditor/docs/api.md | 4 + .../jsoneditor/docs/shortcut_keys.md | 17 + .../bower_components/jsoneditor/docs/usage.md | 33 +- .../jsoneditor/examples/01_basic_usage.html | 8 +- .../jsoneditor/examples/02_viewer.html | 9 +- .../jsoneditor/examples/03_switch_mode.html | 13 +- .../jsoneditor/examples/04_load_and_save.html | 7 +- .../examples/05_custom_fields_editable.html | 8 +- .../requirejs_demo/requirejs_demo.html | 2 +- .../examples/requirejs_demo/scripts/main.js | 2 +- .../bower_components/jsoneditor/index.js | 1 + .../bower_components/jsoneditor/jsoneditor.js | 6264 ---- .../jsoneditor/jsoneditor.map | 1 - .../jsoneditor/jsoneditor.min.css | 1 - .../jsoneditor/jsoneditor.min.js | 31 - .../bower_components/jsoneditor/package.json | 38 + .../jsoneditor/src/css/contextmenu.css | 224 + .../jsoneditor/src/css/img/description.txt | 13 + .../jsoneditor/src/css/img/export.sh | 16 + .../src/css/img/jsoneditor-icons.png | Bin 0 -> 14438 bytes .../src/css/img/jsoneditor-icons.svg | 861 + .../jsoneditor/src/css/jsoneditor.css | 223 + .../jsoneditor/src/css/menu.css | 100 + .../jsoneditor/src/css/searchbox.css | 74 + .../jsoneditor/src/js/ContextMenu.js | 443 + .../jsoneditor/src/js/Highlighter.js | 84 + .../jsoneditor/src/js/History.js | 222 + .../jsoneditor/src/js/JSONEditor.js | 262 + .../jsoneditor/src/js/Node.js | 2929 ++ .../jsoneditor/src/js/SearchBox.js | 288 + .../jsoneditor/src/js/ace/index.js | 9 + .../{asset => src/js}/ace/theme-jsoneditor.js | 4 +- .../jsoneditor/src/js/appendNodeFactory.js | 226 + .../jsoneditor/src/js/header.js | 28 + .../jsoneditor/src/js/modeswitcher.js | 100 + .../jsoneditor/src/js/textmode.js | 343 + .../jsoneditor/src/js/treemode.js | 744 + .../jsoneditor/src/js/util.js | 613 + 283 files changed, 48836 insertions(+), 34502 deletions(-) delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-animate/.bower.json delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-animate/README.md delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-animate/angular-animate.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-animate/angular-animate.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-animate/angular-animate.min.js.map delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-animate/bower.json delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-animate/index.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-animate/package.json create mode 100644 data-mgmt/src/main/webapp/bower_components/angular-mocks/ngAnimateMock.js create mode 100644 data-mgmt/src/main/webapp/bower_components/angular-mocks/ngMock.js create mode 100644 data-mgmt/src/main/webapp/bower_components/angular-mocks/ngMockE2E.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-motion/.bower.json delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-motion/.editorconfig delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-motion/.gitignore delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-motion/.jshintrc delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-motion/.travis.yml delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-motion/Gruntfile.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-motion/LICENSE.md delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-motion/README.md delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-motion/bower.json delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-motion/dist/angular-motion.css delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-motion/dist/angular-motion.min.css delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/collapse.css delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/collapse.min.css delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/fade-and-scale.css delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/fade-and-scale.min.css delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/fade-and-slide.css delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/fade-and-slide.min.css delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/fade.css delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/fade.min.css delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/flip.css delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/flip.min.css delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/slide.css delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/slide.min.css delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-motion/package.json delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-motion/src/collapse/collapse.less delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-motion/src/fade-and-scale/fade-and-scale.less delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-motion/src/fade-and-slide/fade-and-slide.less delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-motion/src/fade/fade.less delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-motion/src/flip/flip.less delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-motion/src/slide/slide.less create mode 100644 data-mgmt/src/main/webapp/bower_components/angular-route/index.js create mode 100644 data-mgmt/src/main/webapp/bower_components/angular-sanitize/index.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/.bower.json delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/.bowerrc delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/.editorconfig delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/.gitattributes delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/.gitignore delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/.jshintrc delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/.npmignore delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/.travis.yml delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/LICENSE.md delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/README.md delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/angular-strap.nuspec delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/bower.json delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/angular-strap.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/angular-strap.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/angular-strap.min.js.map delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/angular-strap.tpl.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/angular-strap.tpl.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/affix.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/affix.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/affix.min.js.map delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/alert.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/alert.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/alert.min.js.map delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/alert.tpl.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/alert.tpl.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/aside.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/aside.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/aside.min.js.map delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/aside.tpl.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/aside.tpl.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/button.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/button.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/button.min.js.map delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/collapse.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/collapse.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/collapse.min.js.map delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/date-formatter.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/date-formatter.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/date-formatter.min.js.map delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/date-parser.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/date-parser.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/date-parser.min.js.map delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/datepicker.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/datepicker.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/datepicker.min.js.map delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/datepicker.tpl.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/datepicker.tpl.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/debounce.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/debounce.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/debounce.min.js.map delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/dimensions.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/dimensions.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/dimensions.min.js.map delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/dropdown.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/dropdown.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/dropdown.min.js.map delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/dropdown.tpl.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/dropdown.tpl.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/modal.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/modal.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/modal.min.js.map delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/modal.tpl.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/modal.tpl.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/navbar.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/navbar.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/navbar.min.js.map delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/parse-options.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/parse-options.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/parse-options.min.js.map delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/popover.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/popover.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/popover.min.js.map delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/popover.tpl.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/popover.tpl.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/raf.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/raf.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/raf.min.js.map delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/scrollspy.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/scrollspy.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/scrollspy.min.js.map delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/select.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/select.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/select.min.js.map delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/select.tpl.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/select.tpl.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/tab.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/tab.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/tab.min.js.map delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/tab.tpl.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/tab.tpl.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/timepicker.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/timepicker.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/timepicker.min.js.map delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/timepicker.tpl.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/timepicker.tpl.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/tooltip.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/tooltip.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/tooltip.min.js.map delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/tooltip.tpl.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/tooltip.tpl.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/typeahead.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/typeahead.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/typeahead.min.js.map delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/typeahead.tpl.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/dist/modules/typeahead.tpl.min.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/gulpfile.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/package.json delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/affix/affix.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/alert/alert.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/alert/alert.tpl.html delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/aside/aside.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/aside/aside.tpl.html delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/button/button.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/collapse/collapse.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/datepicker/datepicker.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/datepicker/datepicker.tpl.html delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/dropdown/dropdown.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/dropdown/dropdown.tpl.html delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/helpers/date-formatter.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/helpers/date-parser.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/helpers/debounce.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/helpers/dimensions.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/helpers/parse-options.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/helpers/raf.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/modal/modal.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/modal/modal.tpl.html delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/module.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/navbar/navbar.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/popover/popover.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/popover/popover.tpl.html delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/scrollspy/scrollspy.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/select/select.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/select/select.tpl.html delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/tab/tab.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/tab/tab.tpl.html delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/timepicker/timepicker.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/timepicker/timepicker.tpl.html delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/tooltip/tooltip.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/tooltip/tooltip.tpl.html delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/typeahead/typeahead.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/angular-strap/src/typeahead/typeahead.tpl.html create mode 100644 data-mgmt/src/main/webapp/bower_components/angular-ui-bootstrap-bower/.bower.json create mode 100644 data-mgmt/src/main/webapp/bower_components/angular-ui-bootstrap-bower/bower.json create mode 100644 data-mgmt/src/main/webapp/bower_components/angular-ui-bootstrap-bower/ui-bootstrap-tpls.js create mode 100644 data-mgmt/src/main/webapp/bower_components/angular-ui-bootstrap-bower/ui-bootstrap-tpls.min.js create mode 100644 data-mgmt/src/main/webapp/bower_components/angular-ui-bootstrap-bower/ui-bootstrap.js create mode 100644 data-mgmt/src/main/webapp/bower_components/angular-ui-bootstrap-bower/ui-bootstrap.min.js mode change 100755 => 100644 data-mgmt/src/main/webapp/bower_components/angular-ui-select/dist/select.js mode change 100755 => 100644 data-mgmt/src/main/webapp/bower_components/angular-ui-select/dist/select.min.js create mode 100644 data-mgmt/src/main/webapp/bower_components/angular/index.js create mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/CONTRIBUTING.md delete mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/asset/ace/ace.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/asset/ace/ext-searchbox.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/asset/ace/mode-json.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/asset/ace/theme-textmate.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/asset/ace/worker-json.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/asset/jsonlint/jsonlint.js rename data-mgmt/src/main/webapp/bower_components/jsoneditor/{ => dist}/img/jsoneditor-icons.png (100%) rename data-mgmt/src/main/webapp/bower_components/jsoneditor/{ => dist}/jsoneditor.css (99%) create mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/dist/jsoneditor.js create mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/dist/jsoneditor.map create mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/dist/jsoneditor.min.css create mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/dist/jsoneditor.min.js create mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/index.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/jsoneditor.js delete mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/jsoneditor.map delete mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/jsoneditor.min.css delete mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/jsoneditor.min.js create mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/package.json create mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/contextmenu.css create mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/img/description.txt create mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/img/export.sh create mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/img/jsoneditor-icons.png create mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/img/jsoneditor-icons.svg create mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/jsoneditor.css create mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/menu.css create mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/searchbox.css create mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/ContextMenu.js create mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/Highlighter.js create mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/History.js create mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/JSONEditor.js create mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/Node.js create mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/SearchBox.js create mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/ace/index.js rename data-mgmt/src/main/webapp/bower_components/jsoneditor/{asset => src/js}/ace/theme-jsoneditor.js (96%) create mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/appendNodeFactory.js create mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/header.js create mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/modeswitcher.js create mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/textmode.js create mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/treemode.js create mode 100644 data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/util.js diff --git a/data-mgmt/bower.json b/data-mgmt/bower.json index 71679c0..b2686bf 100755 --- a/data-mgmt/bower.json +++ b/data-mgmt/bower.json @@ -1,20 +1,20 @@ { "name": "lightblue-data-mgmt", "dependencies": { - "angular": ">=1.3.0", + "angular": "1.3.15", "jquery": "1.11.1", "bootstrap": "~3.2.x", - "angular-route": "~1.3.x", + "angular-route": "1.3.15", "lightblue.js": "~0.3.0", - "angular-ui-select": "~0.8.3", - "angular-sanitize": "~1.3.2", - "jsoneditor": "~3.1.2", - "angular-strap": "~2.1.6" + "angular-ui-select": "~0.11.2", + "angular-sanitize": "1.3.15", + "jsoneditor": "~4.1.3", + "angular-ui-bootstrap-bower": "~0.12.1" }, "devDependencies": { - "angular-mocks": "~1.3.4" + "angular-mocks": "~1.3.15" }, "resolutions": { - "angular": ">=1.3.0" + "angular": "1.3.15" } } diff --git a/data-mgmt/src/main/webapp/bower_components/angular-animate/.bower.json b/data-mgmt/src/main/webapp/bower_components/angular-animate/.bower.json deleted file mode 100644 index ba0804e..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-animate/.bower.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "angular-animate", - "version": "1.3.9", - "main": "./angular-animate.js", - "ignore": [], - "dependencies": { - "angular": "1.3.9" - }, - "homepage": "https://github.com/angular/bower-angular-animate", - "_release": "1.3.9", - "_resolution": { - "type": "version", - "tag": "v1.3.9", - "commit": "4b8780c9c57fbd9c0112f7e0af45502fb432fc9b" - }, - "_source": "git://github.com/angular/bower-angular-animate.git", - "_target": "^1.2", - "_originalSource": "angular-animate" -} \ No newline at end of file diff --git a/data-mgmt/src/main/webapp/bower_components/angular-animate/README.md b/data-mgmt/src/main/webapp/bower_components/angular-animate/README.md deleted file mode 100644 index 930b5dc..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-animate/README.md +++ /dev/null @@ -1,77 +0,0 @@ -# packaged angular-animate - -This repo is for distribution on `npm` and `bower`. The source for this module is in the -[main AngularJS repo](https://github.com/angular/angular.js/tree/master/src/ngAnimate). -Please file issues and pull requests against that repo. - -## Install - -You can install this package either with `npm` or with `bower`. - -### npm - -```shell -npm install angular-animate -``` - -Add a ` -``` - -Then add `ngAnimate` as a dependency for your app: - -```javascript -angular.module('myApp', ['ngAnimate']); -``` - -Note that this package is not in CommonJS format, so doing `require('angular-animate')` will -return `undefined`. - -### bower - -```shell -bower install angular-animate -``` - -Then add a ` -``` - -Then add `ngAnimate` as a dependency for your app: - -```javascript -angular.module('myApp', ['ngAnimate']); -``` - -## Documentation - -Documentation is available on the -[AngularJS docs site](http://docs.angularjs.org/api/ngAnimate). - -## License - -The MIT License - -Copyright (c) 2010-2012 Google, Inc. http://angularjs.org - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/data-mgmt/src/main/webapp/bower_components/angular-animate/angular-animate.js b/data-mgmt/src/main/webapp/bower_components/angular-animate/angular-animate.js deleted file mode 100644 index c1abff9..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-animate/angular-animate.js +++ /dev/null @@ -1,2138 +0,0 @@ -/** - * @license AngularJS v1.3.9 - * (c) 2010-2014 Google, Inc. http://angularjs.org - * License: MIT - */ -(function(window, angular, undefined) {'use strict'; - -/* jshint maxlen: false */ - -/** - * @ngdoc module - * @name ngAnimate - * @description - * - * The `ngAnimate` module provides support for JavaScript, CSS3 transition and CSS3 keyframe animation hooks within existing core and custom directives. - * - *
- * - * # Usage - * - * To see animations in action, all that is required is to define the appropriate CSS classes - * or to register a JavaScript animation via the `myModule.animation()` function. The directives that support animation automatically are: - * `ngRepeat`, `ngInclude`, `ngIf`, `ngSwitch`, `ngShow`, `ngHide`, `ngView` and `ngClass`. Custom directives can take advantage of animation - * by using the `$animate` service. - * - * Below is a more detailed breakdown of the supported animation events provided by pre-existing ng directives: - * - * | Directive | Supported Animations | - * |----------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------| - * | {@link ng.directive:ngRepeat#animations ngRepeat} | enter, leave and move | - * | {@link ngRoute.directive:ngView#animations ngView} | enter and leave | - * | {@link ng.directive:ngInclude#animations ngInclude} | enter and leave | - * | {@link ng.directive:ngSwitch#animations ngSwitch} | enter and leave | - * | {@link ng.directive:ngIf#animations ngIf} | enter and leave | - * | {@link ng.directive:ngClass#animations ngClass} | add and remove (the CSS class(es) present) | - * | {@link ng.directive:ngShow#animations ngShow} & {@link ng.directive:ngHide#animations ngHide} | add and remove (the ng-hide class value) | - * | {@link ng.directive:form#animation-hooks form} & {@link ng.directive:ngModel#animation-hooks ngModel} | add and remove (dirty, pristine, valid, invalid & all other validations) | - * | {@link module:ngMessages#animations ngMessages} | add and remove (ng-active & ng-inactive) | - * | {@link module:ngMessages#animations ngMessage} | enter and leave | - * - * You can find out more information about animations upon visiting each directive page. - * - * Below is an example of how to apply animations to a directive that supports animation hooks: - * - * ```html - * - * - * - * - * ``` - * - * Keep in mind that, by default, if an animation is running, any child elements cannot be animated - * until the parent element's animation has completed. This blocking feature can be overridden by - * placing the `ng-animate-children` attribute on a parent container tag. - * - * ```html - *
- *
- *
- * ... - *
- *
- *
- * ``` - * - * When the `on` expression value changes and an animation is triggered then each of the elements within - * will all animate without the block being applied to child elements. - * - * ## Are animations run when the application starts? - * No they are not. When an application is bootstrapped Angular will disable animations from running to avoid - * a frenzy of animations from being triggered as soon as the browser has rendered the screen. For this to work, - * Angular will wait for two digest cycles until enabling animations. From there on, any animation-triggering - * layout changes in the application will trigger animations as normal. - * - * In addition, upon bootstrap, if the routing system or any directives or load remote data (via $http) then Angular - * will automatically extend the wait time to enable animations once **all** of the outbound HTTP requests - * are complete. - * - * ## CSS-defined Animations - * The animate service will automatically apply two CSS classes to the animated element and these two CSS classes - * are designed to contain the start and end CSS styling. Both CSS transitions and keyframe animations are supported - * and can be used to play along with this naming structure. - * - * The following code below demonstrates how to perform animations using **CSS transitions** with Angular: - * - * ```html - * - * - *
- *
- *
- * ``` - * - * The following code below demonstrates how to perform animations using **CSS animations** with Angular: - * - * ```html - * - * - *
- *
- *
- * ``` - * - * Both CSS3 animations and transitions can be used together and the animate service will figure out the correct duration and delay timing. - * - * Upon DOM mutation, the event class is added first (something like `ng-enter`), then the browser prepares itself to add - * the active class (in this case `ng-enter-active`) which then triggers the animation. The animation module will automatically - * detect the CSS code to determine when the animation ends. Once the animation is over then both CSS classes will be - * removed from the DOM. If a browser does not support CSS transitions or CSS animations then the animation will start and end - * immediately resulting in a DOM element that is at its final state. This final state is when the DOM element - * has no CSS transition/animation classes applied to it. - * - * ### Structural transition animations - * - * Structural transitions (such as enter, leave and move) will always apply a `0s none` transition - * value to force the browser into rendering the styles defined in the setup (`.ng-enter`, `.ng-leave` - * or `.ng-move`) class. This means that any active transition animations operating on the element - * will be cut off to make way for the enter, leave or move animation. - * - * ### Class-based transition animations - * - * Class-based transitions refer to transition animations that are triggered when a CSS class is - * added to or removed from the element (via `$animate.addClass`, `$animate.removeClass`, - * `$animate.setClass`, or by directives such as `ngClass`, `ngModel` and `form`). - * They are different when compared to structural animations since they **do not cancel existing - * animations** nor do they **block successive transitions** from rendering on the same element. - * This distinction allows for **multiple class-based transitions** to be performed on the same element. - * - * In addition to ngAnimate supporting the default (natural) functionality of class-based transition - * animations, ngAnimate also decorates the element with starting and ending CSS classes to aid the - * developer in further styling the element throughout the transition animation. Earlier versions - * of ngAnimate may have caused natural CSS transitions to break and not render properly due to - * $animate temporarily blocking transitions using `0s none` in order to allow the setup CSS class - * (the `-add` or `-remove` class) to be applied without triggering an animation. However, as of - * **version 1.3**, this workaround has been removed with ngAnimate and all non-ngAnimate CSS - * class transitions are compatible with ngAnimate. - * - * There is, however, one special case when dealing with class-based transitions in ngAnimate. - * When rendering class-based transitions that make use of the setup and active CSS classes - * (e.g. `.fade-add` and `.fade-add-active` for when `.fade` is added) be sure to define - * the transition value **on the active CSS class** and not the setup class. - * - * ```css - * .fade-add { - * /* remember to place a 0s transition here - * to ensure that the styles are applied instantly - * even if the element already has a transition style */ - * transition:0s linear all; - * - * /* starting CSS styles */ - * opacity:1; - * } - * .fade-add.fade-add-active { - * /* this will be the length of the animation */ - * transition:1s linear all; - * opacity:0; - * } - * ``` - * - * The setup CSS class (in this case `.fade-add`) also has a transition style property, however, it - * has a duration of zero. This may not be required, however, incase the browser is unable to render - * the styling present in this CSS class instantly then it could be that the browser is attempting - * to perform an unnecessary transition. - * - * This workaround, however, does not apply to standard class-based transitions that are rendered - * when a CSS class containing a transition is applied to an element: - * - * ```css - * /* this works as expected */ - * .fade { - * transition:1s linear all; - * opacity:0; - * } - * ``` - * - * Please keep this in mind when coding the CSS markup that will be used within class-based transitions. - * Also, try not to mix the two class-based animation flavors together since the CSS code may become - * overly complex. - * - * - * ### Preventing Collisions With Third Party Libraries - * - * Some third-party frameworks place animation duration defaults across many element or className - * selectors in order to make their code small and reuseable. This can lead to issues with ngAnimate, which - * is expecting actual animations on these elements and has to wait for their completion. - * - * You can prevent this unwanted behavior by using a prefix on all your animation classes: - * - * ```css - * /* prefixed with animate- */ - * .animate-fade-add.animate-fade-add-active { - * transition:1s linear all; - * opacity:0; - * } - * ``` - * - * You then configure `$animate` to enforce this prefix: - * - * ```js - * $animateProvider.classNameFilter(/animate-/); - * ``` - * - * - * ### CSS Staggering Animations - * A Staggering animation is a collection of animations that are issued with a slight delay in between each successive operation resulting in a - * curtain-like effect. The ngAnimate module (versions >=1.2) supports staggering animations and the stagger effect can be - * performed by creating a **ng-EVENT-stagger** CSS class and attaching that class to the base CSS class used for - * the animation. The style property expected within the stagger class can either be a **transition-delay** or an - * **animation-delay** property (or both if your animation contains both transitions and keyframe animations). - * - * ```css - * .my-animation.ng-enter { - * /* standard transition code */ - * -webkit-transition: 1s linear all; - * transition: 1s linear all; - * opacity:0; - * } - * .my-animation.ng-enter-stagger { - * /* this will have a 100ms delay between each successive leave animation */ - * -webkit-transition-delay: 0.1s; - * transition-delay: 0.1s; - * - * /* in case the stagger doesn't work then these two values - * must be set to 0 to avoid an accidental CSS inheritance */ - * -webkit-transition-duration: 0s; - * transition-duration: 0s; - * } - * .my-animation.ng-enter.ng-enter-active { - * /* standard transition styles */ - * opacity:1; - * } - * ``` - * - * Staggering animations work by default in ngRepeat (so long as the CSS class is defined). Outside of ngRepeat, to use staggering animations - * on your own, they can be triggered by firing multiple calls to the same event on $animate. However, the restrictions surrounding this - * are that each of the elements must have the same CSS className value as well as the same parent element. A stagger operation - * will also be reset if more than 10ms has passed after the last animation has been fired. - * - * The following code will issue the **ng-leave-stagger** event on the element provided: - * - * ```js - * var kids = parent.children(); - * - * $animate.leave(kids[0]); //stagger index=0 - * $animate.leave(kids[1]); //stagger index=1 - * $animate.leave(kids[2]); //stagger index=2 - * $animate.leave(kids[3]); //stagger index=3 - * $animate.leave(kids[4]); //stagger index=4 - * - * $timeout(function() { - * //stagger has reset itself - * $animate.leave(kids[5]); //stagger index=0 - * $animate.leave(kids[6]); //stagger index=1 - * }, 100, false); - * ``` - * - * Stagger animations are currently only supported within CSS-defined animations. - * - * ## JavaScript-defined Animations - * In the event that you do not want to use CSS3 transitions or CSS3 animations or if you wish to offer animations on browsers that do not - * yet support CSS transitions/animations, then you can make use of JavaScript animations defined inside of your AngularJS module. - * - * ```js - * //!annotate="YourApp" Your AngularJS Module|Replace this or ngModule with the module that you used to define your application. - * var ngModule = angular.module('YourApp', ['ngAnimate']); - * ngModule.animation('.my-crazy-animation', function() { - * return { - * enter: function(element, done) { - * //run the animation here and call done when the animation is complete - * return function(cancelled) { - * //this (optional) function will be called when the animation - * //completes or when the animation is cancelled (the cancelled - * //flag will be set to true if cancelled). - * }; - * }, - * leave: function(element, done) { }, - * move: function(element, done) { }, - * - * //animation that can be triggered before the class is added - * beforeAddClass: function(element, className, done) { }, - * - * //animation that can be triggered after the class is added - * addClass: function(element, className, done) { }, - * - * //animation that can be triggered before the class is removed - * beforeRemoveClass: function(element, className, done) { }, - * - * //animation that can be triggered after the class is removed - * removeClass: function(element, className, done) { } - * }; - * }); - * ``` - * - * JavaScript-defined animations are created with a CSS-like class selector and a collection of events which are set to run - * a javascript callback function. When an animation is triggered, $animate will look for a matching animation which fits - * the element's CSS class attribute value and then run the matching animation event function (if found). - * In other words, if the CSS classes present on the animated element match any of the JavaScript animations then the callback function will - * be executed. It should be also noted that only simple, single class selectors are allowed (compound class selectors are not supported). - * - * Within a JavaScript animation, an object containing various event callback animation functions is expected to be returned. - * As explained above, these callbacks are triggered based on the animation event. Therefore if an enter animation is run, - * and the JavaScript animation is found, then the enter callback will handle that animation (in addition to the CSS keyframe animation - * or transition code that is defined via a stylesheet). - * - * - * ### Applying Directive-specific Styles to an Animation - * In some cases a directive or service may want to provide `$animate` with extra details that the animation will - * include into its animation. Let's say for example we wanted to render an animation that animates an element - * towards the mouse coordinates as to where the user clicked last. By collecting the X/Y coordinates of the click - * (via the event parameter) we can set the `top` and `left` styles into an object and pass that into our function - * call to `$animate.addClass`. - * - * ```js - * canvas.on('click', function(e) { - * $animate.addClass(element, 'on', { - * to: { - * left : e.client.x + 'px', - * top : e.client.y + 'px' - * } - * }): - * }); - * ``` - * - * Now when the animation runs, and a transition or keyframe animation is picked up, then the animation itself will - * also include and transition the styling of the `left` and `top` properties into its running animation. If we want - * to provide some starting animation values then we can do so by placing the starting animations styles into an object - * called `from` in the same object as the `to` animations. - * - * ```js - * canvas.on('click', function(e) { - * $animate.addClass(element, 'on', { - * from: { - * position: 'absolute', - * left: '0px', - * top: '0px' - * }, - * to: { - * left : e.client.x + 'px', - * top : e.client.y + 'px' - * } - * }): - * }); - * ``` - * - * Once the animation is complete or cancelled then the union of both the before and after styles are applied to the - * element. If `ngAnimate` is not present then the styles will be applied immediately. - * - */ - -angular.module('ngAnimate', ['ng']) - - /** - * @ngdoc provider - * @name $animateProvider - * @description - * - * The `$animateProvider` allows developers to register JavaScript animation event handlers directly inside of a module. - * When an animation is triggered, the $animate service will query the $animate service to find any animations that match - * the provided name value. - * - * Requires the {@link ngAnimate `ngAnimate`} module to be installed. - * - * Please visit the {@link ngAnimate `ngAnimate`} module overview page learn more about how to use animations in your application. - * - */ - .directive('ngAnimateChildren', function() { - var NG_ANIMATE_CHILDREN = '$$ngAnimateChildren'; - return function(scope, element, attrs) { - var val = attrs.ngAnimateChildren; - if (angular.isString(val) && val.length === 0) { //empty attribute - element.data(NG_ANIMATE_CHILDREN, true); - } else { - scope.$watch(val, function(value) { - element.data(NG_ANIMATE_CHILDREN, !!value); - }); - } - }; - }) - - //this private service is only used within CSS-enabled animations - //IE8 + IE9 do not support rAF natively, but that is fine since they - //also don't support transitions and keyframes which means that the code - //below will never be used by the two browsers. - .factory('$$animateReflow', ['$$rAF', '$document', function($$rAF, $document) { - var bod = $document[0].body; - return function(fn) { - //the returned function acts as the cancellation function - return $$rAF(function() { - //the line below will force the browser to perform a repaint - //so that all the animated elements within the animation frame - //will be properly updated and drawn on screen. This is - //required to perform multi-class CSS based animations with - //Firefox. DO NOT REMOVE THIS LINE. - var a = bod.offsetWidth + 1; - fn(); - }); - }; - }]) - - .config(['$provide', '$animateProvider', function($provide, $animateProvider) { - var noop = angular.noop; - var forEach = angular.forEach; - var selectors = $animateProvider.$$selectors; - var isArray = angular.isArray; - var isString = angular.isString; - var isObject = angular.isObject; - - var ELEMENT_NODE = 1; - var NG_ANIMATE_STATE = '$$ngAnimateState'; - var NG_ANIMATE_CHILDREN = '$$ngAnimateChildren'; - var NG_ANIMATE_CLASS_NAME = 'ng-animate'; - var rootAnimateState = {running: true}; - - function extractElementNode(element) { - for (var i = 0; i < element.length; i++) { - var elm = element[i]; - if (elm.nodeType == ELEMENT_NODE) { - return elm; - } - } - } - - function prepareElement(element) { - return element && angular.element(element); - } - - function stripCommentsFromElement(element) { - return angular.element(extractElementNode(element)); - } - - function isMatchingElement(elm1, elm2) { - return extractElementNode(elm1) == extractElementNode(elm2); - } - var $$jqLite; - $provide.decorator('$animate', - ['$delegate', '$$q', '$injector', '$sniffer', '$rootElement', '$$asyncCallback', '$rootScope', '$document', '$templateRequest', '$$jqLite', - function($delegate, $$q, $injector, $sniffer, $rootElement, $$asyncCallback, $rootScope, $document, $templateRequest, $$$jqLite) { - - $$jqLite = $$$jqLite; - $rootElement.data(NG_ANIMATE_STATE, rootAnimateState); - - // Wait until all directive and route-related templates are downloaded and - // compiled. The $templateRequest.totalPendingRequests variable keeps track of - // all of the remote templates being currently downloaded. If there are no - // templates currently downloading then the watcher will still fire anyway. - var deregisterWatch = $rootScope.$watch( - function() { return $templateRequest.totalPendingRequests; }, - function(val, oldVal) { - if (val !== 0) return; - deregisterWatch(); - - // Now that all templates have been downloaded, $animate will wait until - // the post digest queue is empty before enabling animations. By having two - // calls to $postDigest calls we can ensure that the flag is enabled at the - // very end of the post digest queue. Since all of the animations in $animate - // use $postDigest, it's important that the code below executes at the end. - // This basically means that the page is fully downloaded and compiled before - // any animations are triggered. - $rootScope.$$postDigest(function() { - $rootScope.$$postDigest(function() { - rootAnimateState.running = false; - }); - }); - } - ); - - var globalAnimationCounter = 0; - var classNameFilter = $animateProvider.classNameFilter(); - var isAnimatableClassName = !classNameFilter - ? function() { return true; } - : function(className) { - return classNameFilter.test(className); - }; - - function classBasedAnimationsBlocked(element, setter) { - var data = element.data(NG_ANIMATE_STATE) || {}; - if (setter) { - data.running = true; - data.structural = true; - element.data(NG_ANIMATE_STATE, data); - } - return data.disabled || (data.running && data.structural); - } - - function runAnimationPostDigest(fn) { - var cancelFn, defer = $$q.defer(); - defer.promise.$$cancelFn = function() { - cancelFn && cancelFn(); - }; - $rootScope.$$postDigest(function() { - cancelFn = fn(function() { - defer.resolve(); - }); - }); - return defer.promise; - } - - function parseAnimateOptions(options) { - // some plugin code may still be passing in the callback - // function as the last param for the $animate methods so - // it's best to only allow string or array values for now - if (isObject(options)) { - if (options.tempClasses && isString(options.tempClasses)) { - options.tempClasses = options.tempClasses.split(/\s+/); - } - return options; - } - } - - function resolveElementClasses(element, cache, runningAnimations) { - runningAnimations = runningAnimations || {}; - - var lookup = {}; - forEach(runningAnimations, function(data, selector) { - forEach(selector.split(' '), function(s) { - lookup[s]=data; - }); - }); - - var hasClasses = Object.create(null); - forEach((element.attr('class') || '').split(/\s+/), function(className) { - hasClasses[className] = true; - }); - - var toAdd = [], toRemove = []; - forEach((cache && cache.classes) || [], function(status, className) { - var hasClass = hasClasses[className]; - var matchingAnimation = lookup[className] || {}; - - // When addClass and removeClass is called then $animate will check to - // see if addClass and removeClass cancel each other out. When there are - // more calls to removeClass than addClass then the count falls below 0 - // and then the removeClass animation will be allowed. Otherwise if the - // count is above 0 then that means an addClass animation will commence. - // Once an animation is allowed then the code will also check to see if - // there exists any on-going animation that is already adding or remvoing - // the matching CSS class. - if (status === false) { - //does it have the class or will it have the class - if (hasClass || matchingAnimation.event == 'addClass') { - toRemove.push(className); - } - } else if (status === true) { - //is the class missing or will it be removed? - if (!hasClass || matchingAnimation.event == 'removeClass') { - toAdd.push(className); - } - } - }); - - return (toAdd.length + toRemove.length) > 0 && [toAdd.join(' '), toRemove.join(' ')]; - } - - function lookup(name) { - if (name) { - var matches = [], - flagMap = {}, - classes = name.substr(1).split('.'); - - //the empty string value is the default animation - //operation which performs CSS transition and keyframe - //animations sniffing. This is always included for each - //element animation procedure if the browser supports - //transitions and/or keyframe animations. The default - //animation is added to the top of the list to prevent - //any previous animations from affecting the element styling - //prior to the element being animated. - if ($sniffer.transitions || $sniffer.animations) { - matches.push($injector.get(selectors[''])); - } - - for (var i=0; i < classes.length; i++) { - var klass = classes[i], - selectorFactoryName = selectors[klass]; - if (selectorFactoryName && !flagMap[klass]) { - matches.push($injector.get(selectorFactoryName)); - flagMap[klass] = true; - } - } - return matches; - } - } - - function animationRunner(element, animationEvent, className, options) { - //transcluded directives may sometimes fire an animation using only comment nodes - //best to catch this early on to prevent any animation operations from occurring - var node = element[0]; - if (!node) { - return; - } - - if (options) { - options.to = options.to || {}; - options.from = options.from || {}; - } - - var classNameAdd; - var classNameRemove; - if (isArray(className)) { - classNameAdd = className[0]; - classNameRemove = className[1]; - if (!classNameAdd) { - className = classNameRemove; - animationEvent = 'removeClass'; - } else if (!classNameRemove) { - className = classNameAdd; - animationEvent = 'addClass'; - } else { - className = classNameAdd + ' ' + classNameRemove; - } - } - - var isSetClassOperation = animationEvent == 'setClass'; - var isClassBased = isSetClassOperation - || animationEvent == 'addClass' - || animationEvent == 'removeClass' - || animationEvent == 'animate'; - - var currentClassName = element.attr('class'); - var classes = currentClassName + ' ' + className; - if (!isAnimatableClassName(classes)) { - return; - } - - var beforeComplete = noop, - beforeCancel = [], - before = [], - afterComplete = noop, - afterCancel = [], - after = []; - - var animationLookup = (' ' + classes).replace(/\s+/g,'.'); - forEach(lookup(animationLookup), function(animationFactory) { - var created = registerAnimation(animationFactory, animationEvent); - if (!created && isSetClassOperation) { - registerAnimation(animationFactory, 'addClass'); - registerAnimation(animationFactory, 'removeClass'); - } - }); - - function registerAnimation(animationFactory, event) { - var afterFn = animationFactory[event]; - var beforeFn = animationFactory['before' + event.charAt(0).toUpperCase() + event.substr(1)]; - if (afterFn || beforeFn) { - if (event == 'leave') { - beforeFn = afterFn; - //when set as null then animation knows to skip this phase - afterFn = null; - } - after.push({ - event: event, fn: afterFn - }); - before.push({ - event: event, fn: beforeFn - }); - return true; - } - } - - function run(fns, cancellations, allCompleteFn) { - var animations = []; - forEach(fns, function(animation) { - animation.fn && animations.push(animation); - }); - - var count = 0; - function afterAnimationComplete(index) { - if (cancellations) { - (cancellations[index] || noop)(); - if (++count < animations.length) return; - cancellations = null; - } - allCompleteFn(); - } - - //The code below adds directly to the array in order to work with - //both sync and async animations. Sync animations are when the done() - //operation is called right away. DO NOT REFACTOR! - forEach(animations, function(animation, index) { - var progress = function() { - afterAnimationComplete(index); - }; - switch (animation.event) { - case 'setClass': - cancellations.push(animation.fn(element, classNameAdd, classNameRemove, progress, options)); - break; - case 'animate': - cancellations.push(animation.fn(element, className, options.from, options.to, progress)); - break; - case 'addClass': - cancellations.push(animation.fn(element, classNameAdd || className, progress, options)); - break; - case 'removeClass': - cancellations.push(animation.fn(element, classNameRemove || className, progress, options)); - break; - default: - cancellations.push(animation.fn(element, progress, options)); - break; - } - }); - - if (cancellations && cancellations.length === 0) { - allCompleteFn(); - } - } - - return { - node: node, - event: animationEvent, - className: className, - isClassBased: isClassBased, - isSetClassOperation: isSetClassOperation, - applyStyles: function() { - if (options) { - element.css(angular.extend(options.from || {}, options.to || {})); - } - }, - before: function(allCompleteFn) { - beforeComplete = allCompleteFn; - run(before, beforeCancel, function() { - beforeComplete = noop; - allCompleteFn(); - }); - }, - after: function(allCompleteFn) { - afterComplete = allCompleteFn; - run(after, afterCancel, function() { - afterComplete = noop; - allCompleteFn(); - }); - }, - cancel: function() { - if (beforeCancel) { - forEach(beforeCancel, function(cancelFn) { - (cancelFn || noop)(true); - }); - beforeComplete(true); - } - if (afterCancel) { - forEach(afterCancel, function(cancelFn) { - (cancelFn || noop)(true); - }); - afterComplete(true); - } - } - }; - } - - /** - * @ngdoc service - * @name $animate - * @kind object - * - * @description - * The `$animate` service provides animation detection support while performing DOM operations (enter, leave and move) as well as during addClass and removeClass operations. - * When any of these operations are run, the $animate service - * will examine any JavaScript-defined animations (which are defined by using the $animateProvider provider object) - * as well as any CSS-defined animations against the CSS classes present on the element once the DOM operation is run. - * - * The `$animate` service is used behind the scenes with pre-existing directives and animation with these directives - * will work out of the box without any extra configuration. - * - * Requires the {@link ngAnimate `ngAnimate`} module to be installed. - * - * Please visit the {@link ngAnimate `ngAnimate`} module overview page learn more about how to use animations in your application. - * ## Callback Promises - * With AngularJS 1.3, each of the animation methods, on the `$animate` service, return a promise when called. The - * promise itself is then resolved once the animation has completed itself, has been cancelled or has been - * skipped due to animations being disabled. (Note that even if the animation is cancelled it will still - * call the resolve function of the animation.) - * - * ```js - * $animate.enter(element, container).then(function() { - * //...this is called once the animation is complete... - * }); - * ``` - * - * Also note that, due to the nature of the callback promise, if any Angular-specific code (like changing the scope, - * location of the page, etc...) is executed within the callback promise then be sure to wrap the code using - * `$scope.$apply(...)`; - * - * ```js - * $animate.leave(element).then(function() { - * $scope.$apply(function() { - * $location.path('/new-page'); - * }); - * }); - * ``` - * - * An animation can also be cancelled by calling the `$animate.cancel(promise)` method with the provided - * promise that was returned when the animation was started. - * - * ```js - * var promise = $animate.addClass(element, 'super-long-animation'); - * promise.then(function() { - * //this will still be called even if cancelled - * }); - * - * element.on('click', function() { - * //tooo lazy to wait for the animation to end - * $animate.cancel(promise); - * }); - * ``` - * - * (Keep in mind that the promise cancellation is unique to `$animate` since promises in - * general cannot be cancelled.) - * - */ - return { - /** - * @ngdoc method - * @name $animate#animate - * @kind function - * - * @description - * Performs an inline animation on the element which applies the provided `to` and `from` CSS styles to the element. - * If any detected CSS transition, keyframe or JavaScript matches the provided `className` value then the animation - * will take on the provided styles. For example, if a transition animation is set for the given className then the - * provided `from` and `to` styles will be applied alongside the given transition. If a JavaScript animation is - * detected then the provided styles will be given in as function paramters. - * - * ```js - * ngModule.animation('.my-inline-animation', function() { - * return { - * animate : function(element, className, from, to, done) { - * //styles - * } - * } - * }); - * ``` - * - * Below is a breakdown of each step that occurs during the `animate` animation: - * - * | Animation Step | What the element class attribute looks like | - * |-----------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------| - * | 1. `$animate.animate(...)` is called | `class="my-animation"` | - * | 2. `$animate` waits for the next digest to start the animation | `class="my-animation ng-animate"` | - * | 3. `$animate` runs the JavaScript-defined animations detected on the element | `class="my-animation ng-animate"` | - * | 4. the `className` class value is added to the element | `class="my-animation ng-animate className"` | - * | 5. `$animate` scans the element styles to get the CSS transition/animation duration and delay | `class="my-animation ng-animate className"` | - * | 6. `$animate` blocks all CSS transitions on the element to ensure the `.className` class styling is applied right away| `class="my-animation ng-animate className"` | - * | 7. `$animate` applies the provided collection of `from` CSS styles to the element | `class="my-animation ng-animate className"` | - * | 8. `$animate` waits for a single animation frame (this performs a reflow) | `class="my-animation ng-animate className"` | - * | 9. `$animate` removes the CSS transition block placed on the element | `class="my-animation ng-animate className"` | - * | 10. the `className-active` class is added (this triggers the CSS transition/animation) | `class="my-animation ng-animate className className-active"` | - * | 11. `$animate` applies the collection of `to` CSS styles to the element which are then handled by the transition | `class="my-animation ng-animate className className-active"` | - * | 12. `$animate` waits for the animation to complete (via events and timeout) | `class="my-animation ng-animate className className-active"` | - * | 13. The animation ends and all generated CSS classes are removed from the element | `class="my-animation"` | - * | 14. The returned promise is resolved. | `class="my-animation"` | - * - * @param {DOMElement} element the element that will be the focus of the enter animation - * @param {object} from a collection of CSS styles that will be applied to the element at the start of the animation - * @param {object} to a collection of CSS styles that the element will animate towards - * @param {string=} className an optional CSS class that will be added to the element for the duration of the animation (the default class is `ng-inline-animate`) - * @param {object=} options an optional collection of options that will be picked up by the CSS transition/animation - * @return {Promise} the animation callback promise - */ - animate: function(element, from, to, className, options) { - className = className || 'ng-inline-animate'; - options = parseAnimateOptions(options) || {}; - options.from = to ? from : null; - options.to = to ? to : from; - - return runAnimationPostDigest(function(done) { - return performAnimation('animate', className, stripCommentsFromElement(element), null, null, noop, options, done); - }); - }, - - /** - * @ngdoc method - * @name $animate#enter - * @kind function - * - * @description - * Appends the element to the parentElement element that resides in the document and then runs the enter animation. Once - * the animation is started, the following CSS classes will be present on the element for the duration of the animation: - * - * Below is a breakdown of each step that occurs during enter animation: - * - * | Animation Step | What the element class attribute looks like | - * |-----------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------| - * | 1. `$animate.enter(...)` is called | `class="my-animation"` | - * | 2. element is inserted into the `parentElement` element or beside the `afterElement` element | `class="my-animation"` | - * | 3. `$animate` waits for the next digest to start the animation | `class="my-animation ng-animate"` | - * | 4. `$animate` runs the JavaScript-defined animations detected on the element | `class="my-animation ng-animate"` | - * | 5. the `.ng-enter` class is added to the element | `class="my-animation ng-animate ng-enter"` | - * | 6. `$animate` scans the element styles to get the CSS transition/animation duration and delay | `class="my-animation ng-animate ng-enter"` | - * | 7. `$animate` blocks all CSS transitions on the element to ensure the `.ng-enter` class styling is applied right away | `class="my-animation ng-animate ng-enter"` | - * | 8. `$animate` waits for a single animation frame (this performs a reflow) | `class="my-animation ng-animate ng-enter"` | - * | 9. `$animate` removes the CSS transition block placed on the element | `class="my-animation ng-animate ng-enter"` | - * | 10. the `.ng-enter-active` class is added (this triggers the CSS transition/animation) | `class="my-animation ng-animate ng-enter ng-enter-active"` | - * | 11. `$animate` waits for the animation to complete (via events and timeout) | `class="my-animation ng-animate ng-enter ng-enter-active"` | - * | 12. The animation ends and all generated CSS classes are removed from the element | `class="my-animation"` | - * | 13. The returned promise is resolved. | `class="my-animation"` | - * - * @param {DOMElement} element the element that will be the focus of the enter animation - * @param {DOMElement} parentElement the parent element of the element that will be the focus of the enter animation - * @param {DOMElement} afterElement the sibling element (which is the previous element) of the element that will be the focus of the enter animation - * @param {object=} options an optional collection of options that will be picked up by the CSS transition/animation - * @return {Promise} the animation callback promise - */ - enter: function(element, parentElement, afterElement, options) { - options = parseAnimateOptions(options); - element = angular.element(element); - parentElement = prepareElement(parentElement); - afterElement = prepareElement(afterElement); - - classBasedAnimationsBlocked(element, true); - $delegate.enter(element, parentElement, afterElement); - return runAnimationPostDigest(function(done) { - return performAnimation('enter', 'ng-enter', stripCommentsFromElement(element), parentElement, afterElement, noop, options, done); - }); - }, - - /** - * @ngdoc method - * @name $animate#leave - * @kind function - * - * @description - * Runs the leave animation operation and, upon completion, removes the element from the DOM. Once - * the animation is started, the following CSS classes will be added for the duration of the animation: - * - * Below is a breakdown of each step that occurs during leave animation: - * - * | Animation Step | What the element class attribute looks like | - * |-----------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------| - * | 1. `$animate.leave(...)` is called | `class="my-animation"` | - * | 2. `$animate` runs the JavaScript-defined animations detected on the element | `class="my-animation ng-animate"` | - * | 3. `$animate` waits for the next digest to start the animation | `class="my-animation ng-animate"` | - * | 4. the `.ng-leave` class is added to the element | `class="my-animation ng-animate ng-leave"` | - * | 5. `$animate` scans the element styles to get the CSS transition/animation duration and delay | `class="my-animation ng-animate ng-leave"` | - * | 6. `$animate` blocks all CSS transitions on the element to ensure the `.ng-leave` class styling is applied right away | `class="my-animation ng-animate ng-leave"` | - * | 7. `$animate` waits for a single animation frame (this performs a reflow) | `class="my-animation ng-animate ng-leave"` | - * | 8. `$animate` removes the CSS transition block placed on the element | `class="my-animation ng-animate ng-leave"` | - * | 9. the `.ng-leave-active` class is added (this triggers the CSS transition/animation) | `class="my-animation ng-animate ng-leave ng-leave-active"` | - * | 10. `$animate` waits for the animation to complete (via events and timeout) | `class="my-animation ng-animate ng-leave ng-leave-active"` | - * | 11. The animation ends and all generated CSS classes are removed from the element | `class="my-animation"` | - * | 12. The element is removed from the DOM | ... | - * | 13. The returned promise is resolved. | ... | - * - * @param {DOMElement} element the element that will be the focus of the leave animation - * @param {object=} options an optional collection of styles that will be picked up by the CSS transition/animation - * @return {Promise} the animation callback promise - */ - leave: function(element, options) { - options = parseAnimateOptions(options); - element = angular.element(element); - - cancelChildAnimations(element); - classBasedAnimationsBlocked(element, true); - return runAnimationPostDigest(function(done) { - return performAnimation('leave', 'ng-leave', stripCommentsFromElement(element), null, null, function() { - $delegate.leave(element); - }, options, done); - }); - }, - - /** - * @ngdoc method - * @name $animate#move - * @kind function - * - * @description - * Fires the move DOM operation. Just before the animation starts, the animate service will either append it into the parentElement container or - * add the element directly after the afterElement element if present. Then the move animation will be run. Once - * the animation is started, the following CSS classes will be added for the duration of the animation: - * - * Below is a breakdown of each step that occurs during move animation: - * - * | Animation Step | What the element class attribute looks like | - * |----------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------| - * | 1. `$animate.move(...)` is called | `class="my-animation"` | - * | 2. element is moved into the parentElement element or beside the afterElement element | `class="my-animation"` | - * | 3. `$animate` waits for the next digest to start the animation | `class="my-animation ng-animate"` | - * | 4. `$animate` runs the JavaScript-defined animations detected on the element | `class="my-animation ng-animate"` | - * | 5. the `.ng-move` class is added to the element | `class="my-animation ng-animate ng-move"` | - * | 6. `$animate` scans the element styles to get the CSS transition/animation duration and delay | `class="my-animation ng-animate ng-move"` | - * | 7. `$animate` blocks all CSS transitions on the element to ensure the `.ng-move` class styling is applied right away | `class="my-animation ng-animate ng-move"` | - * | 8. `$animate` waits for a single animation frame (this performs a reflow) | `class="my-animation ng-animate ng-move"` | - * | 9. `$animate` removes the CSS transition block placed on the element | `class="my-animation ng-animate ng-move"` | - * | 10. the `.ng-move-active` class is added (this triggers the CSS transition/animation) | `class="my-animation ng-animate ng-move ng-move-active"` | - * | 11. `$animate` waits for the animation to complete (via events and timeout) | `class="my-animation ng-animate ng-move ng-move-active"` | - * | 12. The animation ends and all generated CSS classes are removed from the element | `class="my-animation"` | - * | 13. The returned promise is resolved. | `class="my-animation"` | - * - * @param {DOMElement} element the element that will be the focus of the move animation - * @param {DOMElement} parentElement the parentElement element of the element that will be the focus of the move animation - * @param {DOMElement} afterElement the sibling element (which is the previous element) of the element that will be the focus of the move animation - * @param {object=} options an optional collection of styles that will be picked up by the CSS transition/animation - * @return {Promise} the animation callback promise - */ - move: function(element, parentElement, afterElement, options) { - options = parseAnimateOptions(options); - element = angular.element(element); - parentElement = prepareElement(parentElement); - afterElement = prepareElement(afterElement); - - cancelChildAnimations(element); - classBasedAnimationsBlocked(element, true); - $delegate.move(element, parentElement, afterElement); - return runAnimationPostDigest(function(done) { - return performAnimation('move', 'ng-move', stripCommentsFromElement(element), parentElement, afterElement, noop, options, done); - }); - }, - - /** - * @ngdoc method - * @name $animate#addClass - * - * @description - * Triggers a custom animation event based off the className variable and then attaches the className value to the element as a CSS class. - * Unlike the other animation methods, the animate service will suffix the className value with {@type -add} in order to provide - * the animate service the setup and active CSS classes in order to trigger the animation (this will be skipped if no CSS transitions - * or keyframes are defined on the -add-active or base CSS class). - * - * Below is a breakdown of each step that occurs during addClass animation: - * - * | Animation Step | What the element class attribute looks like | - * |--------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------| - * | 1. `$animate.addClass(element, 'super')` is called | `class="my-animation"` | - * | 2. `$animate` runs the JavaScript-defined animations detected on the element | `class="my-animation ng-animate"` | - * | 3. the `.super-add` class is added to the element | `class="my-animation ng-animate super-add"` | - * | 4. `$animate` waits for a single animation frame (this performs a reflow) | `class="my-animation ng-animate super-add"` | - * | 5. the `.super` and `.super-add-active` classes are added (this triggers the CSS transition/animation) | `class="my-animation ng-animate super super-add super-add-active"` | - * | 6. `$animate` scans the element styles to get the CSS transition/animation duration and delay | `class="my-animation ng-animate super super-add super-add-active"` | - * | 7. `$animate` waits for the animation to complete (via events and timeout) | `class="my-animation ng-animate super super-add super-add-active"` | - * | 8. The animation ends and all generated CSS classes are removed from the element | `class="my-animation super"` | - * | 9. The super class is kept on the element | `class="my-animation super"` | - * | 10. The returned promise is resolved. | `class="my-animation super"` | - * - * @param {DOMElement} element the element that will be animated - * @param {string} className the CSS class that will be added to the element and then animated - * @param {object=} options an optional collection of styles that will be picked up by the CSS transition/animation - * @return {Promise} the animation callback promise - */ - addClass: function(element, className, options) { - return this.setClass(element, className, [], options); - }, - - /** - * @ngdoc method - * @name $animate#removeClass - * - * @description - * Triggers a custom animation event based off the className variable and then removes the CSS class provided by the className value - * from the element. Unlike the other animation methods, the animate service will suffix the className value with {@type -remove} in - * order to provide the animate service the setup and active CSS classes in order to trigger the animation (this will be skipped if - * no CSS transitions or keyframes are defined on the -remove or base CSS classes). - * - * Below is a breakdown of each step that occurs during removeClass animation: - * - * | Animation Step | What the element class attribute looks like | - * |----------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------| - * | 1. `$animate.removeClass(element, 'super')` is called | `class="my-animation super"` | - * | 2. `$animate` runs the JavaScript-defined animations detected on the element | `class="my-animation super ng-animate"` | - * | 3. the `.super-remove` class is added to the element | `class="my-animation super ng-animate super-remove"` | - * | 4. `$animate` waits for a single animation frame (this performs a reflow) | `class="my-animation super ng-animate super-remove"` | - * | 5. the `.super-remove-active` classes are added and `.super` is removed (this triggers the CSS transition/animation) | `class="my-animation ng-animate super-remove super-remove-active"` | - * | 6. `$animate` scans the element styles to get the CSS transition/animation duration and delay | `class="my-animation ng-animate super-remove super-remove-active"` | - * | 7. `$animate` waits for the animation to complete (via events and timeout) | `class="my-animation ng-animate super-remove super-remove-active"` | - * | 8. The animation ends and all generated CSS classes are removed from the element | `class="my-animation"` | - * | 9. The returned promise is resolved. | `class="my-animation"` | - * - * - * @param {DOMElement} element the element that will be animated - * @param {string} className the CSS class that will be animated and then removed from the element - * @param {object=} options an optional collection of styles that will be picked up by the CSS transition/animation - * @return {Promise} the animation callback promise - */ - removeClass: function(element, className, options) { - return this.setClass(element, [], className, options); - }, - - /** - * - * @ngdoc method - * @name $animate#setClass - * - * @description Adds and/or removes the given CSS classes to and from the element. - * Once complete, the `done()` callback will be fired (if provided). - * - * | Animation Step | What the element class attribute looks like | - * |----------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------| - * | 1. `$animate.setClass(element, 'on', 'off')` is called | `class="my-animation off"` | - * | 2. `$animate` runs the JavaScript-defined animations detected on the element | `class="my-animation ng-animate off"` | - * | 3. the `.on-add` and `.off-remove` classes are added to the element | `class="my-animation ng-animate on-add off-remove off"` | - * | 4. `$animate` waits for a single animation frame (this performs a reflow) | `class="my-animation ng-animate on-add off-remove off"` | - * | 5. the `.on`, `.on-add-active` and `.off-remove-active` classes are added and `.off` is removed (this triggers the CSS transition/animation) | `class="my-animation ng-animate on on-add on-add-active off-remove off-remove-active"` | - * | 6. `$animate` scans the element styles to get the CSS transition/animation duration and delay | `class="my-animation ng-animate on on-add on-add-active off-remove off-remove-active"` | - * | 7. `$animate` waits for the animation to complete (via events and timeout) | `class="my-animation ng-animate on on-add on-add-active off-remove off-remove-active"` | - * | 8. The animation ends and all generated CSS classes are removed from the element | `class="my-animation on"` | - * | 9. The returned promise is resolved. | `class="my-animation on"` | - * - * @param {DOMElement} element the element which will have its CSS classes changed - * removed from it - * @param {string} add the CSS classes which will be added to the element - * @param {string} remove the CSS class which will be removed from the element - * CSS classes have been set on the element - * @param {object=} options an optional collection of styles that will be picked up by the CSS transition/animation - * @return {Promise} the animation callback promise - */ - setClass: function(element, add, remove, options) { - options = parseAnimateOptions(options); - - var STORAGE_KEY = '$$animateClasses'; - element = angular.element(element); - element = stripCommentsFromElement(element); - - if (classBasedAnimationsBlocked(element)) { - return $delegate.$$setClassImmediately(element, add, remove, options); - } - - // we're using a combined array for both the add and remove - // operations since the ORDER OF addClass and removeClass matters - var classes, cache = element.data(STORAGE_KEY); - var hasCache = !!cache; - if (!cache) { - cache = {}; - cache.classes = {}; - } - classes = cache.classes; - - add = isArray(add) ? add : add.split(' '); - forEach(add, function(c) { - if (c && c.length) { - classes[c] = true; - } - }); - - remove = isArray(remove) ? remove : remove.split(' '); - forEach(remove, function(c) { - if (c && c.length) { - classes[c] = false; - } - }); - - if (hasCache) { - if (options && cache.options) { - cache.options = angular.extend(cache.options || {}, options); - } - - //the digest cycle will combine all the animations into one function - return cache.promise; - } else { - element.data(STORAGE_KEY, cache = { - classes: classes, - options: options - }); - } - - return cache.promise = runAnimationPostDigest(function(done) { - var parentElement = element.parent(); - var elementNode = extractElementNode(element); - var parentNode = elementNode.parentNode; - // TODO(matsko): move this code into the animationsDisabled() function once #8092 is fixed - if (!parentNode || parentNode['$$NG_REMOVED'] || elementNode['$$NG_REMOVED']) { - done(); - return; - } - - var cache = element.data(STORAGE_KEY); - element.removeData(STORAGE_KEY); - - var state = element.data(NG_ANIMATE_STATE) || {}; - var classes = resolveElementClasses(element, cache, state.active); - return !classes - ? done() - : performAnimation('setClass', classes, element, parentElement, null, function() { - if (classes[0]) $delegate.$$addClassImmediately(element, classes[0]); - if (classes[1]) $delegate.$$removeClassImmediately(element, classes[1]); - }, cache.options, done); - }); - }, - - /** - * @ngdoc method - * @name $animate#cancel - * @kind function - * - * @param {Promise} animationPromise The animation promise that is returned when an animation is started. - * - * @description - * Cancels the provided animation. - */ - cancel: function(promise) { - promise.$$cancelFn(); - }, - - /** - * @ngdoc method - * @name $animate#enabled - * @kind function - * - * @param {boolean=} value If provided then set the animation on or off. - * @param {DOMElement=} element If provided then the element will be used to represent the enable/disable operation - * @return {boolean} Current animation state. - * - * @description - * Globally enables/disables animations. - * - */ - enabled: function(value, element) { - switch (arguments.length) { - case 2: - if (value) { - cleanup(element); - } else { - var data = element.data(NG_ANIMATE_STATE) || {}; - data.disabled = true; - element.data(NG_ANIMATE_STATE, data); - } - break; - - case 1: - rootAnimateState.disabled = !value; - break; - - default: - value = !rootAnimateState.disabled; - break; - } - return !!value; - } - }; - - /* - all animations call this shared animation triggering function internally. - The animationEvent variable refers to the JavaScript animation event that will be triggered - and the className value is the name of the animation that will be applied within the - CSS code. Element, `parentElement` and `afterElement` are provided DOM elements for the animation - and the onComplete callback will be fired once the animation is fully complete. - */ - function performAnimation(animationEvent, className, element, parentElement, afterElement, domOperation, options, doneCallback) { - var noopCancel = noop; - var runner = animationRunner(element, animationEvent, className, options); - if (!runner) { - fireDOMOperation(); - fireBeforeCallbackAsync(); - fireAfterCallbackAsync(); - closeAnimation(); - return noopCancel; - } - - animationEvent = runner.event; - className = runner.className; - var elementEvents = angular.element._data(runner.node); - elementEvents = elementEvents && elementEvents.events; - - if (!parentElement) { - parentElement = afterElement ? afterElement.parent() : element.parent(); - } - - //skip the animation if animations are disabled, a parent is already being animated, - //the element is not currently attached to the document body or then completely close - //the animation if any matching animations are not found at all. - //NOTE: IE8 + IE9 should close properly (run closeAnimation()) in case an animation was found. - if (animationsDisabled(element, parentElement)) { - fireDOMOperation(); - fireBeforeCallbackAsync(); - fireAfterCallbackAsync(); - closeAnimation(); - return noopCancel; - } - - var ngAnimateState = element.data(NG_ANIMATE_STATE) || {}; - var runningAnimations = ngAnimateState.active || {}; - var totalActiveAnimations = ngAnimateState.totalActive || 0; - var lastAnimation = ngAnimateState.last; - var skipAnimation = false; - - if (totalActiveAnimations > 0) { - var animationsToCancel = []; - if (!runner.isClassBased) { - if (animationEvent == 'leave' && runningAnimations['ng-leave']) { - skipAnimation = true; - } else { - //cancel all animations when a structural animation takes place - for (var klass in runningAnimations) { - animationsToCancel.push(runningAnimations[klass]); - } - ngAnimateState = {}; - cleanup(element, true); - } - } else if (lastAnimation.event == 'setClass') { - animationsToCancel.push(lastAnimation); - cleanup(element, className); - } - else if (runningAnimations[className]) { - var current = runningAnimations[className]; - if (current.event == animationEvent) { - skipAnimation = true; - } else { - animationsToCancel.push(current); - cleanup(element, className); - } - } - - if (animationsToCancel.length > 0) { - forEach(animationsToCancel, function(operation) { - operation.cancel(); - }); - } - } - - if (runner.isClassBased - && !runner.isSetClassOperation - && animationEvent != 'animate' - && !skipAnimation) { - skipAnimation = (animationEvent == 'addClass') == element.hasClass(className); //opposite of XOR - } - - if (skipAnimation) { - fireDOMOperation(); - fireBeforeCallbackAsync(); - fireAfterCallbackAsync(); - fireDoneCallbackAsync(); - return noopCancel; - } - - runningAnimations = ngAnimateState.active || {}; - totalActiveAnimations = ngAnimateState.totalActive || 0; - - if (animationEvent == 'leave') { - //there's no need to ever remove the listener since the element - //will be removed (destroyed) after the leave animation ends or - //is cancelled midway - element.one('$destroy', function(e) { - var element = angular.element(this); - var state = element.data(NG_ANIMATE_STATE); - if (state) { - var activeLeaveAnimation = state.active['ng-leave']; - if (activeLeaveAnimation) { - activeLeaveAnimation.cancel(); - cleanup(element, 'ng-leave'); - } - } - }); - } - - //the ng-animate class does nothing, but it's here to allow for - //parent animations to find and cancel child animations when needed - $$jqLite.addClass(element, NG_ANIMATE_CLASS_NAME); - if (options && options.tempClasses) { - forEach(options.tempClasses, function(className) { - $$jqLite.addClass(element, className); - }); - } - - var localAnimationCount = globalAnimationCounter++; - totalActiveAnimations++; - runningAnimations[className] = runner; - - element.data(NG_ANIMATE_STATE, { - last: runner, - active: runningAnimations, - index: localAnimationCount, - totalActive: totalActiveAnimations - }); - - //first we run the before animations and when all of those are complete - //then we perform the DOM operation and run the next set of animations - fireBeforeCallbackAsync(); - runner.before(function(cancelled) { - var data = element.data(NG_ANIMATE_STATE); - cancelled = cancelled || - !data || !data.active[className] || - (runner.isClassBased && data.active[className].event != animationEvent); - - fireDOMOperation(); - if (cancelled === true) { - closeAnimation(); - } else { - fireAfterCallbackAsync(); - runner.after(closeAnimation); - } - }); - - return runner.cancel; - - function fireDOMCallback(animationPhase) { - var eventName = '$animate:' + animationPhase; - if (elementEvents && elementEvents[eventName] && elementEvents[eventName].length > 0) { - $$asyncCallback(function() { - element.triggerHandler(eventName, { - event: animationEvent, - className: className - }); - }); - } - } - - function fireBeforeCallbackAsync() { - fireDOMCallback('before'); - } - - function fireAfterCallbackAsync() { - fireDOMCallback('after'); - } - - function fireDoneCallbackAsync() { - fireDOMCallback('close'); - doneCallback(); - } - - //it is less complicated to use a flag than managing and canceling - //timeouts containing multiple callbacks. - function fireDOMOperation() { - if (!fireDOMOperation.hasBeenRun) { - fireDOMOperation.hasBeenRun = true; - domOperation(); - } - } - - function closeAnimation() { - if (!closeAnimation.hasBeenRun) { - if (runner) { //the runner doesn't exist if it fails to instantiate - runner.applyStyles(); - } - - closeAnimation.hasBeenRun = true; - if (options && options.tempClasses) { - forEach(options.tempClasses, function(className) { - $$jqLite.removeClass(element, className); - }); - } - - var data = element.data(NG_ANIMATE_STATE); - if (data) { - - /* only structural animations wait for reflow before removing an - animation, but class-based animations don't. An example of this - failing would be when a parent HTML tag has a ng-class attribute - causing ALL directives below to skip animations during the digest */ - if (runner && runner.isClassBased) { - cleanup(element, className); - } else { - $$asyncCallback(function() { - var data = element.data(NG_ANIMATE_STATE) || {}; - if (localAnimationCount == data.index) { - cleanup(element, className, animationEvent); - } - }); - element.data(NG_ANIMATE_STATE, data); - } - } - fireDoneCallbackAsync(); - } - } - } - - function cancelChildAnimations(element) { - var node = extractElementNode(element); - if (node) { - var nodes = angular.isFunction(node.getElementsByClassName) ? - node.getElementsByClassName(NG_ANIMATE_CLASS_NAME) : - node.querySelectorAll('.' + NG_ANIMATE_CLASS_NAME); - forEach(nodes, function(element) { - element = angular.element(element); - var data = element.data(NG_ANIMATE_STATE); - if (data && data.active) { - forEach(data.active, function(runner) { - runner.cancel(); - }); - } - }); - } - } - - function cleanup(element, className) { - if (isMatchingElement(element, $rootElement)) { - if (!rootAnimateState.disabled) { - rootAnimateState.running = false; - rootAnimateState.structural = false; - } - } else if (className) { - var data = element.data(NG_ANIMATE_STATE) || {}; - - var removeAnimations = className === true; - if (!removeAnimations && data.active && data.active[className]) { - data.totalActive--; - delete data.active[className]; - } - - if (removeAnimations || !data.totalActive) { - $$jqLite.removeClass(element, NG_ANIMATE_CLASS_NAME); - element.removeData(NG_ANIMATE_STATE); - } - } - } - - function animationsDisabled(element, parentElement) { - if (rootAnimateState.disabled) { - return true; - } - - if (isMatchingElement(element, $rootElement)) { - return rootAnimateState.running; - } - - var allowChildAnimations, parentRunningAnimation, hasParent; - do { - //the element did not reach the root element which means that it - //is not apart of the DOM. Therefore there is no reason to do - //any animations on it - if (parentElement.length === 0) break; - - var isRoot = isMatchingElement(parentElement, $rootElement); - var state = isRoot ? rootAnimateState : (parentElement.data(NG_ANIMATE_STATE) || {}); - if (state.disabled) { - return true; - } - - //no matter what, for an animation to work it must reach the root element - //this implies that the element is attached to the DOM when the animation is run - if (isRoot) { - hasParent = true; - } - - //once a flag is found that is strictly false then everything before - //it will be discarded and all child animations will be restricted - if (allowChildAnimations !== false) { - var animateChildrenFlag = parentElement.data(NG_ANIMATE_CHILDREN); - if (angular.isDefined(animateChildrenFlag)) { - allowChildAnimations = animateChildrenFlag; - } - } - - parentRunningAnimation = parentRunningAnimation || - state.running || - (state.last && !state.last.isClassBased); - } - while (parentElement = parentElement.parent()); - - return !hasParent || (!allowChildAnimations && parentRunningAnimation); - } - }]); - - $animateProvider.register('', ['$window', '$sniffer', '$timeout', '$$animateReflow', - function($window, $sniffer, $timeout, $$animateReflow) { - // Detect proper transitionend/animationend event names. - var CSS_PREFIX = '', TRANSITION_PROP, TRANSITIONEND_EVENT, ANIMATION_PROP, ANIMATIONEND_EVENT; - - // If unprefixed events are not supported but webkit-prefixed are, use the latter. - // Otherwise, just use W3C names, browsers not supporting them at all will just ignore them. - // Note: Chrome implements `window.onwebkitanimationend` and doesn't implement `window.onanimationend` - // but at the same time dispatches the `animationend` event and not `webkitAnimationEnd`. - // Register both events in case `window.onanimationend` is not supported because of that, - // do the same for `transitionend` as Safari is likely to exhibit similar behavior. - // Also, the only modern browser that uses vendor prefixes for transitions/keyframes is webkit - // therefore there is no reason to test anymore for other vendor prefixes: http://caniuse.com/#search=transition - if (window.ontransitionend === undefined && window.onwebkittransitionend !== undefined) { - CSS_PREFIX = '-webkit-'; - TRANSITION_PROP = 'WebkitTransition'; - TRANSITIONEND_EVENT = 'webkitTransitionEnd transitionend'; - } else { - TRANSITION_PROP = 'transition'; - TRANSITIONEND_EVENT = 'transitionend'; - } - - if (window.onanimationend === undefined && window.onwebkitanimationend !== undefined) { - CSS_PREFIX = '-webkit-'; - ANIMATION_PROP = 'WebkitAnimation'; - ANIMATIONEND_EVENT = 'webkitAnimationEnd animationend'; - } else { - ANIMATION_PROP = 'animation'; - ANIMATIONEND_EVENT = 'animationend'; - } - - var DURATION_KEY = 'Duration'; - var PROPERTY_KEY = 'Property'; - var DELAY_KEY = 'Delay'; - var ANIMATION_ITERATION_COUNT_KEY = 'IterationCount'; - var ANIMATION_PLAYSTATE_KEY = 'PlayState'; - var NG_ANIMATE_PARENT_KEY = '$$ngAnimateKey'; - var NG_ANIMATE_CSS_DATA_KEY = '$$ngAnimateCSS3Data'; - var ELAPSED_TIME_MAX_DECIMAL_PLACES = 3; - var CLOSING_TIME_BUFFER = 1.5; - var ONE_SECOND = 1000; - - var lookupCache = {}; - var parentCounter = 0; - var animationReflowQueue = []; - var cancelAnimationReflow; - function clearCacheAfterReflow() { - if (!cancelAnimationReflow) { - cancelAnimationReflow = $$animateReflow(function() { - animationReflowQueue = []; - cancelAnimationReflow = null; - lookupCache = {}; - }); - } - } - - function afterReflow(element, callback) { - if (cancelAnimationReflow) { - cancelAnimationReflow(); - } - animationReflowQueue.push(callback); - cancelAnimationReflow = $$animateReflow(function() { - forEach(animationReflowQueue, function(fn) { - fn(); - }); - - animationReflowQueue = []; - cancelAnimationReflow = null; - lookupCache = {}; - }); - } - - var closingTimer = null; - var closingTimestamp = 0; - var animationElementQueue = []; - function animationCloseHandler(element, totalTime) { - var node = extractElementNode(element); - element = angular.element(node); - - //this item will be garbage collected by the closing - //animation timeout - animationElementQueue.push(element); - - //but it may not need to cancel out the existing timeout - //if the timestamp is less than the previous one - var futureTimestamp = Date.now() + totalTime; - if (futureTimestamp <= closingTimestamp) { - return; - } - - $timeout.cancel(closingTimer); - - closingTimestamp = futureTimestamp; - closingTimer = $timeout(function() { - closeAllAnimations(animationElementQueue); - animationElementQueue = []; - }, totalTime, false); - } - - function closeAllAnimations(elements) { - forEach(elements, function(element) { - var elementData = element.data(NG_ANIMATE_CSS_DATA_KEY); - if (elementData) { - forEach(elementData.closeAnimationFns, function(fn) { - fn(); - }); - } - }); - } - - function getElementAnimationDetails(element, cacheKey) { - var data = cacheKey ? lookupCache[cacheKey] : null; - if (!data) { - var transitionDuration = 0; - var transitionDelay = 0; - var animationDuration = 0; - var animationDelay = 0; - - //we want all the styles defined before and after - forEach(element, function(element) { - if (element.nodeType == ELEMENT_NODE) { - var elementStyles = $window.getComputedStyle(element) || {}; - - var transitionDurationStyle = elementStyles[TRANSITION_PROP + DURATION_KEY]; - transitionDuration = Math.max(parseMaxTime(transitionDurationStyle), transitionDuration); - - var transitionDelayStyle = elementStyles[TRANSITION_PROP + DELAY_KEY]; - transitionDelay = Math.max(parseMaxTime(transitionDelayStyle), transitionDelay); - - var animationDelayStyle = elementStyles[ANIMATION_PROP + DELAY_KEY]; - animationDelay = Math.max(parseMaxTime(elementStyles[ANIMATION_PROP + DELAY_KEY]), animationDelay); - - var aDuration = parseMaxTime(elementStyles[ANIMATION_PROP + DURATION_KEY]); - - if (aDuration > 0) { - aDuration *= parseInt(elementStyles[ANIMATION_PROP + ANIMATION_ITERATION_COUNT_KEY], 10) || 1; - } - animationDuration = Math.max(aDuration, animationDuration); - } - }); - data = { - total: 0, - transitionDelay: transitionDelay, - transitionDuration: transitionDuration, - animationDelay: animationDelay, - animationDuration: animationDuration - }; - if (cacheKey) { - lookupCache[cacheKey] = data; - } - } - return data; - } - - function parseMaxTime(str) { - var maxValue = 0; - var values = isString(str) ? - str.split(/\s*,\s*/) : - []; - forEach(values, function(value) { - maxValue = Math.max(parseFloat(value) || 0, maxValue); - }); - return maxValue; - } - - function getCacheKey(element) { - var parentElement = element.parent(); - var parentID = parentElement.data(NG_ANIMATE_PARENT_KEY); - if (!parentID) { - parentElement.data(NG_ANIMATE_PARENT_KEY, ++parentCounter); - parentID = parentCounter; - } - return parentID + '-' + extractElementNode(element).getAttribute('class'); - } - - function animateSetup(animationEvent, element, className, styles) { - var structural = ['ng-enter','ng-leave','ng-move'].indexOf(className) >= 0; - - var cacheKey = getCacheKey(element); - var eventCacheKey = cacheKey + ' ' + className; - var itemIndex = lookupCache[eventCacheKey] ? ++lookupCache[eventCacheKey].total : 0; - - var stagger = {}; - if (itemIndex > 0) { - var staggerClassName = className + '-stagger'; - var staggerCacheKey = cacheKey + ' ' + staggerClassName; - var applyClasses = !lookupCache[staggerCacheKey]; - - applyClasses && $$jqLite.addClass(element, staggerClassName); - - stagger = getElementAnimationDetails(element, staggerCacheKey); - - applyClasses && $$jqLite.removeClass(element, staggerClassName); - } - - $$jqLite.addClass(element, className); - - var formerData = element.data(NG_ANIMATE_CSS_DATA_KEY) || {}; - var timings = getElementAnimationDetails(element, eventCacheKey); - var transitionDuration = timings.transitionDuration; - var animationDuration = timings.animationDuration; - - if (structural && transitionDuration === 0 && animationDuration === 0) { - $$jqLite.removeClass(element, className); - return false; - } - - var blockTransition = styles || (structural && transitionDuration > 0); - var blockAnimation = animationDuration > 0 && - stagger.animationDelay > 0 && - stagger.animationDuration === 0; - - var closeAnimationFns = formerData.closeAnimationFns || []; - element.data(NG_ANIMATE_CSS_DATA_KEY, { - stagger: stagger, - cacheKey: eventCacheKey, - running: formerData.running || 0, - itemIndex: itemIndex, - blockTransition: blockTransition, - closeAnimationFns: closeAnimationFns - }); - - var node = extractElementNode(element); - - if (blockTransition) { - blockTransitions(node, true); - if (styles) { - element.css(styles); - } - } - - if (blockAnimation) { - blockAnimations(node, true); - } - - return true; - } - - function animateRun(animationEvent, element, className, activeAnimationComplete, styles) { - var node = extractElementNode(element); - var elementData = element.data(NG_ANIMATE_CSS_DATA_KEY); - if (node.getAttribute('class').indexOf(className) == -1 || !elementData) { - activeAnimationComplete(); - return; - } - - var activeClassName = ''; - var pendingClassName = ''; - forEach(className.split(' '), function(klass, i) { - var prefix = (i > 0 ? ' ' : '') + klass; - activeClassName += prefix + '-active'; - pendingClassName += prefix + '-pending'; - }); - - var style = ''; - var appliedStyles = []; - var itemIndex = elementData.itemIndex; - var stagger = elementData.stagger; - var staggerTime = 0; - if (itemIndex > 0) { - var transitionStaggerDelay = 0; - if (stagger.transitionDelay > 0 && stagger.transitionDuration === 0) { - transitionStaggerDelay = stagger.transitionDelay * itemIndex; - } - - var animationStaggerDelay = 0; - if (stagger.animationDelay > 0 && stagger.animationDuration === 0) { - animationStaggerDelay = stagger.animationDelay * itemIndex; - appliedStyles.push(CSS_PREFIX + 'animation-play-state'); - } - - staggerTime = Math.round(Math.max(transitionStaggerDelay, animationStaggerDelay) * 100) / 100; - } - - if (!staggerTime) { - $$jqLite.addClass(element, activeClassName); - if (elementData.blockTransition) { - blockTransitions(node, false); - } - } - - var eventCacheKey = elementData.cacheKey + ' ' + activeClassName; - var timings = getElementAnimationDetails(element, eventCacheKey); - var maxDuration = Math.max(timings.transitionDuration, timings.animationDuration); - if (maxDuration === 0) { - $$jqLite.removeClass(element, activeClassName); - animateClose(element, className); - activeAnimationComplete(); - return; - } - - if (!staggerTime && styles) { - if (!timings.transitionDuration) { - element.css('transition', timings.animationDuration + 's linear all'); - appliedStyles.push('transition'); - } - element.css(styles); - } - - var maxDelay = Math.max(timings.transitionDelay, timings.animationDelay); - var maxDelayTime = maxDelay * ONE_SECOND; - - if (appliedStyles.length > 0) { - //the element being animated may sometimes contain comment nodes in - //the jqLite object, so we're safe to use a single variable to house - //the styles since there is always only one element being animated - var oldStyle = node.getAttribute('style') || ''; - if (oldStyle.charAt(oldStyle.length - 1) !== ';') { - oldStyle += ';'; - } - node.setAttribute('style', oldStyle + ' ' + style); - } - - var startTime = Date.now(); - var css3AnimationEvents = ANIMATIONEND_EVENT + ' ' + TRANSITIONEND_EVENT; - var animationTime = (maxDelay + maxDuration) * CLOSING_TIME_BUFFER; - var totalTime = (staggerTime + animationTime) * ONE_SECOND; - - var staggerTimeout; - if (staggerTime > 0) { - $$jqLite.addClass(element, pendingClassName); - staggerTimeout = $timeout(function() { - staggerTimeout = null; - - if (timings.transitionDuration > 0) { - blockTransitions(node, false); - } - if (timings.animationDuration > 0) { - blockAnimations(node, false); - } - - $$jqLite.addClass(element, activeClassName); - $$jqLite.removeClass(element, pendingClassName); - - if (styles) { - if (timings.transitionDuration === 0) { - element.css('transition', timings.animationDuration + 's linear all'); - } - element.css(styles); - appliedStyles.push('transition'); - } - }, staggerTime * ONE_SECOND, false); - } - - element.on(css3AnimationEvents, onAnimationProgress); - elementData.closeAnimationFns.push(function() { - onEnd(); - activeAnimationComplete(); - }); - - elementData.running++; - animationCloseHandler(element, totalTime); - return onEnd; - - // This will automatically be called by $animate so - // there is no need to attach this internally to the - // timeout done method. - function onEnd() { - element.off(css3AnimationEvents, onAnimationProgress); - $$jqLite.removeClass(element, activeClassName); - $$jqLite.removeClass(element, pendingClassName); - if (staggerTimeout) { - $timeout.cancel(staggerTimeout); - } - animateClose(element, className); - var node = extractElementNode(element); - for (var i in appliedStyles) { - node.style.removeProperty(appliedStyles[i]); - } - } - - function onAnimationProgress(event) { - event.stopPropagation(); - var ev = event.originalEvent || event; - var timeStamp = ev.$manualTimeStamp || ev.timeStamp || Date.now(); - - /* Firefox (or possibly just Gecko) likes to not round values up - * when a ms measurement is used for the animation */ - var elapsedTime = parseFloat(ev.elapsedTime.toFixed(ELAPSED_TIME_MAX_DECIMAL_PLACES)); - - /* $manualTimeStamp is a mocked timeStamp value which is set - * within browserTrigger(). This is only here so that tests can - * mock animations properly. Real events fallback to event.timeStamp, - * or, if they don't, then a timeStamp is automatically created for them. - * We're checking to see if the timeStamp surpasses the expected delay, - * but we're using elapsedTime instead of the timeStamp on the 2nd - * pre-condition since animations sometimes close off early */ - if (Math.max(timeStamp - startTime, 0) >= maxDelayTime && elapsedTime >= maxDuration) { - activeAnimationComplete(); - } - } - } - - function blockTransitions(node, bool) { - node.style[TRANSITION_PROP + PROPERTY_KEY] = bool ? 'none' : ''; - } - - function blockAnimations(node, bool) { - node.style[ANIMATION_PROP + ANIMATION_PLAYSTATE_KEY] = bool ? 'paused' : ''; - } - - function animateBefore(animationEvent, element, className, styles) { - if (animateSetup(animationEvent, element, className, styles)) { - return function(cancelled) { - cancelled && animateClose(element, className); - }; - } - } - - function animateAfter(animationEvent, element, className, afterAnimationComplete, styles) { - if (element.data(NG_ANIMATE_CSS_DATA_KEY)) { - return animateRun(animationEvent, element, className, afterAnimationComplete, styles); - } else { - animateClose(element, className); - afterAnimationComplete(); - } - } - - function animate(animationEvent, element, className, animationComplete, options) { - //If the animateSetup function doesn't bother returning a - //cancellation function then it means that there is no animation - //to perform at all - var preReflowCancellation = animateBefore(animationEvent, element, className, options.from); - if (!preReflowCancellation) { - clearCacheAfterReflow(); - animationComplete(); - return; - } - - //There are two cancellation functions: one is before the first - //reflow animation and the second is during the active state - //animation. The first function will take care of removing the - //data from the element which will not make the 2nd animation - //happen in the first place - var cancel = preReflowCancellation; - afterReflow(element, function() { - //once the reflow is complete then we point cancel to - //the new cancellation function which will remove all of the - //animation properties from the active animation - cancel = animateAfter(animationEvent, element, className, animationComplete, options.to); - }); - - return function(cancelled) { - (cancel || noop)(cancelled); - }; - } - - function animateClose(element, className) { - $$jqLite.removeClass(element, className); - var data = element.data(NG_ANIMATE_CSS_DATA_KEY); - if (data) { - if (data.running) { - data.running--; - } - if (!data.running || data.running === 0) { - element.removeData(NG_ANIMATE_CSS_DATA_KEY); - } - } - } - - return { - animate: function(element, className, from, to, animationCompleted, options) { - options = options || {}; - options.from = from; - options.to = to; - return animate('animate', element, className, animationCompleted, options); - }, - - enter: function(element, animationCompleted, options) { - options = options || {}; - return animate('enter', element, 'ng-enter', animationCompleted, options); - }, - - leave: function(element, animationCompleted, options) { - options = options || {}; - return animate('leave', element, 'ng-leave', animationCompleted, options); - }, - - move: function(element, animationCompleted, options) { - options = options || {}; - return animate('move', element, 'ng-move', animationCompleted, options); - }, - - beforeSetClass: function(element, add, remove, animationCompleted, options) { - options = options || {}; - var className = suffixClasses(remove, '-remove') + ' ' + - suffixClasses(add, '-add'); - var cancellationMethod = animateBefore('setClass', element, className, options.from); - if (cancellationMethod) { - afterReflow(element, animationCompleted); - return cancellationMethod; - } - clearCacheAfterReflow(); - animationCompleted(); - }, - - beforeAddClass: function(element, className, animationCompleted, options) { - options = options || {}; - var cancellationMethod = animateBefore('addClass', element, suffixClasses(className, '-add'), options.from); - if (cancellationMethod) { - afterReflow(element, animationCompleted); - return cancellationMethod; - } - clearCacheAfterReflow(); - animationCompleted(); - }, - - beforeRemoveClass: function(element, className, animationCompleted, options) { - options = options || {}; - var cancellationMethod = animateBefore('removeClass', element, suffixClasses(className, '-remove'), options.from); - if (cancellationMethod) { - afterReflow(element, animationCompleted); - return cancellationMethod; - } - clearCacheAfterReflow(); - animationCompleted(); - }, - - setClass: function(element, add, remove, animationCompleted, options) { - options = options || {}; - remove = suffixClasses(remove, '-remove'); - add = suffixClasses(add, '-add'); - var className = remove + ' ' + add; - return animateAfter('setClass', element, className, animationCompleted, options.to); - }, - - addClass: function(element, className, animationCompleted, options) { - options = options || {}; - return animateAfter('addClass', element, suffixClasses(className, '-add'), animationCompleted, options.to); - }, - - removeClass: function(element, className, animationCompleted, options) { - options = options || {}; - return animateAfter('removeClass', element, suffixClasses(className, '-remove'), animationCompleted, options.to); - } - }; - - function suffixClasses(classes, suffix) { - var className = ''; - classes = isArray(classes) ? classes : classes.split(/\s+/); - forEach(classes, function(klass, i) { - if (klass && klass.length > 0) { - className += (i > 0 ? ' ' : '') + klass + suffix; - } - }); - return className; - } - }]); - }]); - - -})(window, window.angular); diff --git a/data-mgmt/src/main/webapp/bower_components/angular-animate/angular-animate.min.js b/data-mgmt/src/main/webapp/bower_components/angular-animate/angular-animate.min.js deleted file mode 100644 index 221271c..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-animate/angular-animate.min.js +++ /dev/null @@ -1,33 +0,0 @@ -/* - AngularJS v1.3.9 - (c) 2010-2014 Google, Inc. http://angularjs.org - License: MIT -*/ -(function(N,f,W){'use strict';f.module("ngAnimate",["ng"]).directive("ngAnimateChildren",function(){return function(X,C,g){g=g.ngAnimateChildren;f.isString(g)&&0===g.length?C.data("$$ngAnimateChildren",!0):X.$watch(g,function(f){C.data("$$ngAnimateChildren",!!f)})}}).factory("$$animateReflow",["$$rAF","$document",function(f,C){return function(g){return f(function(){g()})}}]).config(["$provide","$animateProvider",function(X,C){function g(f){for(var n=0;n=C&&b>=x&&c()}var m=g(e);a=e.data("$$ngAnimateCSS3Data");if(-1!=m.getAttribute("class").indexOf(b)&&a){var k="",t="";n(b.split(" "),function(a, -b){var e=(0", - "license": "MIT", - "bugs": { - "url": "https://github.com/angular/angular.js/issues" - }, - "homepage": "http://angularjs.org" -} diff --git a/data-mgmt/src/main/webapp/bower_components/angular-mocks/.bower.json b/data-mgmt/src/main/webapp/bower_components/angular-mocks/.bower.json index b27a75d..493f5d4 100644 --- a/data-mgmt/src/main/webapp/bower_components/angular-mocks/.bower.json +++ b/data-mgmt/src/main/webapp/bower_components/angular-mocks/.bower.json @@ -1,20 +1,19 @@ { "name": "angular-mocks", - "version": "1.3.4", + "version": "1.3.15", "main": "./angular-mocks.js", "ignore": [], "dependencies": { - "angular": "1.3.4" + "angular": "1.3.15" }, "homepage": "https://github.com/angular/bower-angular-mocks", - "_release": "1.3.4", + "_release": "1.3.15", "_resolution": { "type": "version", - "tag": "v1.3.4", - "commit": "15dd7c6bed51102fadc68ce02fcced2a8391ef34" + "tag": "v1.3.15", + "commit": "1ffdfef850b10d40f2838c1bba41a95755c2d8da" }, "_source": "git://github.com/angular/bower-angular-mocks.git", - "_target": "~1.3.4", - "_originalSource": "angular-mocks", - "_direct": true + "_target": "~1.3.15", + "_originalSource": "angular-mocks" } \ No newline at end of file diff --git a/data-mgmt/src/main/webapp/bower_components/angular-mocks/README.md b/data-mgmt/src/main/webapp/bower_components/angular-mocks/README.md index 1604ef8..440cce9 100644 --- a/data-mgmt/src/main/webapp/bower_components/angular-mocks/README.md +++ b/data-mgmt/src/main/webapp/bower_components/angular-mocks/README.md @@ -14,10 +14,16 @@ You can install this package either with `npm` or with `bower`. npm install angular-mocks ``` -The mocks are then available at `node_modules/angular-mocks/angular-mocks.js`. - -Note that this package is not in CommonJS format, so doing `require('angular-mocks')` will -return `undefined`. +You can `require` ngMock modules: + +```js +var angular = require('angular'); +angular.module('myMod', [ + require('angular-animate'), + require('angular-mocks/ngMock') + require('angular-mocks/ngAnimateMock') +]); +``` ### bower @@ -36,7 +42,7 @@ Documentation is available on the The MIT License -Copyright (c) 2010-2012 Google, Inc. http://angularjs.org +Copyright (c) 2010-2015 Google, Inc. http://angularjs.org Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/data-mgmt/src/main/webapp/bower_components/angular-mocks/angular-mocks.js b/data-mgmt/src/main/webapp/bower_components/angular-mocks/angular-mocks.js index 8021965..cbf36ff 100644 --- a/data-mgmt/src/main/webapp/bower_components/angular-mocks/angular-mocks.js +++ b/data-mgmt/src/main/webapp/bower_components/angular-mocks/angular-mocks.js @@ -1,5 +1,5 @@ /** - * @license AngularJS v1.3.4 + * @license AngularJS v1.3.15 * (c) 2010-2014 Google, Inc. http://angularjs.org * License: MIT */ @@ -250,31 +250,31 @@ angular.mock.$ExceptionHandlerProvider = function() { * * @param {string} mode Mode of operation, defaults to `rethrow`. * - * - `rethrow`: If any errors are passed to the handler in tests, it typically means that there - * is a bug in the application or test, so this mock will make these tests fail. * - `log`: Sometimes it is desirable to test that an error is thrown, for this case the `log` * mode stores an array of errors in `$exceptionHandler.errors`, to allow later * assertion of them. See {@link ngMock.$log#assertEmpty assertEmpty()} and * {@link ngMock.$log#reset reset()} + * - `rethrow`: If any errors are passed to the handler in tests, it typically means that there + * is a bug in the application or test, so this mock will make these tests fail. + * For any implementations that expect exceptions to be thrown, the `rethrow` mode + * will also maintain a log of thrown errors. */ this.mode = function(mode) { + switch (mode) { - case 'rethrow': - handler = function(e) { - throw e; - }; - break; case 'log': + case 'rethrow': var errors = []; - handler = function(e) { if (arguments.length == 1) { errors.push(e); } else { errors.push([].slice.call(arguments, 0)); } + if (mode === "rethrow") { + throw e; + } }; - handler.errors = errors; break; default: @@ -1119,7 +1119,7 @@ angular.mock.dump = function(object) { ``` */ angular.mock.$HttpBackendProvider = function() { - this.$get = ['$rootScope', createHttpBackendMock]; + this.$get = ['$rootScope', '$timeout', createHttpBackendMock]; }; /** @@ -1136,7 +1136,7 @@ angular.mock.$HttpBackendProvider = function() { * @param {Object=} $browser Auto-flushing enabled if specified * @return {Object} Instance of $httpBackend mock */ -function createHttpBackendMock($rootScope, $delegate, $browser) { +function createHttpBackendMock($rootScope, $timeout, $delegate, $browser) { var definitions = [], expectations = [], responses = [], @@ -1149,7 +1149,7 @@ function createHttpBackendMock($rootScope, $delegate, $browser) { return function() { return angular.isNumber(status) ? [status, data, headers, statusText] - : [200, status, data]; + : [200, status, data, headers]; }; } @@ -1166,7 +1166,9 @@ function createHttpBackendMock($rootScope, $delegate, $browser) { } function wrapResponse(wrapped) { - if (!$browser && timeout && timeout.then) timeout.then(handleTimeout); + if (!$browser && timeout) { + timeout.then ? timeout.then(handleTimeout) : $timeout(handleTimeout, timeout); + } return handleResponse; @@ -1281,7 +1283,7 @@ function createHttpBackendMock($rootScope, $delegate, $browser) { * @param {string|RegExp|function(string)} url HTTP url or function that receives the url * and returns true if the url match the current definition. * @param {(Object|function(Object))=} headers HTTP headers. - * @returns {requestHandler} Returns an object with `respond` method that control how a matched + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched * request is handled. You can save this object for later use and invoke `respond` again in * order to change how a matched request is handled. */ @@ -1295,7 +1297,7 @@ function createHttpBackendMock($rootScope, $delegate, $browser) { * @param {string|RegExp|function(string)} url HTTP url or function that receives the url * and returns true if the url match the current definition. * @param {(Object|function(Object))=} headers HTTP headers. - * @returns {requestHandler} Returns an object with `respond` method that control how a matched + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched * request is handled. You can save this object for later use and invoke `respond` again in * order to change how a matched request is handled. */ @@ -1309,7 +1311,7 @@ function createHttpBackendMock($rootScope, $delegate, $browser) { * @param {string|RegExp|function(string)} url HTTP url or function that receives the url * and returns true if the url match the current definition. * @param {(Object|function(Object))=} headers HTTP headers. - * @returns {requestHandler} Returns an object with `respond` method that control how a matched + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched * request is handled. You can save this object for later use and invoke `respond` again in * order to change how a matched request is handled. */ @@ -1325,7 +1327,7 @@ function createHttpBackendMock($rootScope, $delegate, $browser) { * @param {(string|RegExp|function(string))=} data HTTP request body or function that receives * data string and returns true if the data is as expected. * @param {(Object|function(Object))=} headers HTTP headers. - * @returns {requestHandler} Returns an object with `respond` method that control how a matched + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched * request is handled. You can save this object for later use and invoke `respond` again in * order to change how a matched request is handled. */ @@ -1341,7 +1343,7 @@ function createHttpBackendMock($rootScope, $delegate, $browser) { * @param {(string|RegExp|function(string))=} data HTTP request body or function that receives * data string and returns true if the data is as expected. * @param {(Object|function(Object))=} headers HTTP headers. - * @returns {requestHandler} Returns an object with `respond` method that control how a matched + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched * request is handled. You can save this object for later use and invoke `respond` again in * order to change how a matched request is handled. */ @@ -1354,7 +1356,7 @@ function createHttpBackendMock($rootScope, $delegate, $browser) { * * @param {string|RegExp|function(string)} url HTTP url or function that receives the url * and returns true if the url match the current definition. - * @returns {requestHandler} Returns an object with `respond` method that control how a matched + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched * request is handled. You can save this object for later use and invoke `respond` again in * order to change how a matched request is handled. */ @@ -1375,7 +1377,7 @@ function createHttpBackendMock($rootScope, $delegate, $browser) { * is in JSON format. * @param {(Object|function(Object))=} headers HTTP headers or function that receives http header * object and returns true if the headers match the current expectation. - * @returns {requestHandler} Returns an object with `respond` method that control how a matched + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched * request is handled. You can save this object for later use and invoke `respond` again in * order to change how a matched request is handled. * @@ -1410,7 +1412,7 @@ function createHttpBackendMock($rootScope, $delegate, $browser) { * @param {string|RegExp|function(string)} url HTTP url or function that receives the url * and returns true if the url match the current definition. * @param {Object=} headers HTTP headers. - * @returns {requestHandler} Returns an object with `respond` method that control how a matched + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched * request is handled. You can save this object for later use and invoke `respond` again in * order to change how a matched request is handled. See #expect for more info. */ @@ -1424,7 +1426,7 @@ function createHttpBackendMock($rootScope, $delegate, $browser) { * @param {string|RegExp|function(string)} url HTTP url or function that receives the url * and returns true if the url match the current definition. * @param {Object=} headers HTTP headers. - * @returns {requestHandler} Returns an object with `respond` method that control how a matched + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched * request is handled. You can save this object for later use and invoke `respond` again in * order to change how a matched request is handled. */ @@ -1438,7 +1440,7 @@ function createHttpBackendMock($rootScope, $delegate, $browser) { * @param {string|RegExp|function(string)} url HTTP url or function that receives the url * and returns true if the url match the current definition. * @param {Object=} headers HTTP headers. - * @returns {requestHandler} Returns an object with `respond` method that control how a matched + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched * request is handled. You can save this object for later use and invoke `respond` again in * order to change how a matched request is handled. */ @@ -1455,7 +1457,7 @@ function createHttpBackendMock($rootScope, $delegate, $browser) { * receives data string and returns true if the data is as expected, or Object if request body * is in JSON format. * @param {Object=} headers HTTP headers. - * @returns {requestHandler} Returns an object with `respond` method that control how a matched + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched * request is handled. You can save this object for later use and invoke `respond` again in * order to change how a matched request is handled. */ @@ -1472,7 +1474,7 @@ function createHttpBackendMock($rootScope, $delegate, $browser) { * receives data string and returns true if the data is as expected, or Object if request body * is in JSON format. * @param {Object=} headers HTTP headers. - * @returns {requestHandler} Returns an object with `respond` method that control how a matched + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched * request is handled. You can save this object for later use and invoke `respond` again in * order to change how a matched request is handled. */ @@ -1489,7 +1491,7 @@ function createHttpBackendMock($rootScope, $delegate, $browser) { * receives data string and returns true if the data is as expected, or Object if request body * is in JSON format. * @param {Object=} headers HTTP headers. - * @returns {requestHandler} Returns an object with `respond` method that control how a matched + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched * request is handled. You can save this object for later use and invoke `respond` again in * order to change how a matched request is handled. */ @@ -1502,7 +1504,7 @@ function createHttpBackendMock($rootScope, $delegate, $browser) { * * @param {string|RegExp|function(string)} url HTTP url or function that receives the url * and returns true if the url match the current definition. - * @returns {requestHandler} Returns an object with `respond` method that control how a matched + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched * request is handled. You can save this object for later use and invoke `respond` again in * order to change how a matched request is handled. */ @@ -1807,6 +1809,77 @@ angular.mock.$RootElementProvider = function() { }; }; +/** + * @ngdoc service + * @name $controller + * @description + * A decorator for {@link ng.$controller} with additional `bindings` parameter, useful when testing + * controllers of directives that use {@link $compile#-bindtocontroller- `bindToController`}. + * + * + * ## Example + * + * ```js + * + * // Directive definition ... + * + * myMod.directive('myDirective', { + * controller: 'MyDirectiveController', + * bindToController: { + * name: '@' + * } + * }); + * + * + * // Controller definition ... + * + * myMod.controller('MyDirectiveController', ['log', function($log) { + * $log.info(this.name); + * })]; + * + * + * // In a test ... + * + * describe('myDirectiveController', function() { + * it('should write the bound name to the log', inject(function($controller, $log) { + * var ctrl = $controller('MyDirective', { /* no locals */ }, { name: 'Clark Kent' }); + * expect(ctrl.name).toEqual('Clark Kent'); + * expect($log.info.logs).toEqual(['Clark Kent']); + * }); + * }); + * + * ``` + * + * @param {Function|string} constructor If called with a function then it's considered to be the + * controller constructor function. Otherwise it's considered to be a string which is used + * to retrieve the controller constructor using the following steps: + * + * * check if a controller with given name is registered via `$controllerProvider` + * * check if evaluating the string on the current scope returns a constructor + * * if $controllerProvider#allowGlobals, check `window[constructor]` on the global + * `window` object (not recommended) + * + * The string can use the `controller as property` syntax, where the controller instance is published + * as the specified property on the `scope`; the `scope` must be injected into `locals` param for this + * to work correctly. + * + * @param {Object} locals Injection locals for Controller. + * @param {Object=} bindings Properties to add to the controller before invoking the constructor. This is used + * to simulate the `bindToController` feature and simplify certain kinds of tests. + * @return {Object} Instance of given controller. + */ +angular.mock.$ControllerDecorator = ['$delegate', function($delegate) { + return function(expression, locals, later, ident) { + if (later && typeof later === 'object') { + var create = $delegate(expression, locals, true, ident); + angular.extend(create.instance, later); + return create(); + } + return $delegate(expression, locals, later, ident); + }; +}]; + + /** * @ngdoc module * @name ngMock @@ -1835,6 +1908,7 @@ angular.module('ngMock', ['ng']).provider({ $provide.decorator('$$rAF', angular.mock.$RAFDecorator); $provide.decorator('$$asyncCallback', angular.mock.$AsyncCallbackDecorator); $provide.decorator('$rootScope', angular.mock.$RootScopeDecorator); + $provide.decorator('$controller', angular.mock.$ControllerDecorator); }]); /** @@ -2040,7 +2114,7 @@ angular.module('ngMockE2E', ['ng']).config(['$provide', function($provide) { */ angular.mock.e2e = {}; angular.mock.e2e.$httpBackendDecorator = - ['$rootScope', '$delegate', '$browser', createHttpBackendMock]; + ['$rootScope', '$timeout', '$delegate', '$browser', createHttpBackendMock]; /** @@ -2054,7 +2128,7 @@ angular.mock.e2e.$httpBackendDecorator = * * In addition to all the regular `Scope` methods, the following helper methods are available: */ -angular.mock.$RootScopeDecorator = function($delegate) { +angular.mock.$RootScopeDecorator = ['$delegate', function($delegate) { var $rootScopePrototype = Object.getPrototypeOf($delegate); @@ -2126,24 +2200,38 @@ angular.mock.$RootScopeDecorator = function($delegate) { return count; } -}; +}]; if (window.jasmine || window.mocha) { var currentSpec = null, + annotatedFunctions = [], isSpecRunning = function() { return !!currentSpec; }; + angular.mock.$$annotate = angular.injector.$$annotate; + angular.injector.$$annotate = function(fn) { + if (typeof fn === 'function' && !fn.$inject) { + annotatedFunctions.push(fn); + } + return angular.mock.$$annotate.apply(this, arguments); + }; + (window.beforeEach || window.setup)(function() { + annotatedFunctions = []; currentSpec = this; }); (window.afterEach || window.teardown)(function() { var injector = currentSpec.$injector; + annotatedFunctions.forEach(function(fn) { + delete fn.$inject; + }); + angular.forEach(currentSpec.$modules, function(module) { if (module && module.$$hashKey) { module.$$hashKey = undefined; diff --git a/data-mgmt/src/main/webapp/bower_components/angular-mocks/bower.json b/data-mgmt/src/main/webapp/bower_components/angular-mocks/bower.json index f747f6e..a9bc5e7 100644 --- a/data-mgmt/src/main/webapp/bower_components/angular-mocks/bower.json +++ b/data-mgmt/src/main/webapp/bower_components/angular-mocks/bower.json @@ -1,9 +1,9 @@ { "name": "angular-mocks", - "version": "1.3.4", + "version": "1.3.15", "main": "./angular-mocks.js", "ignore": [], "dependencies": { - "angular": "1.3.4" + "angular": "1.3.15" } } diff --git a/data-mgmt/src/main/webapp/bower_components/angular-mocks/ngAnimateMock.js b/data-mgmt/src/main/webapp/bower_components/angular-mocks/ngAnimateMock.js new file mode 100644 index 0000000..6f99e62 --- /dev/null +++ b/data-mgmt/src/main/webapp/bower_components/angular-mocks/ngAnimateMock.js @@ -0,0 +1,2 @@ +require('./angular-mocks'); +module.exports = 'ngAnimateMock'; diff --git a/data-mgmt/src/main/webapp/bower_components/angular-mocks/ngMock.js b/data-mgmt/src/main/webapp/bower_components/angular-mocks/ngMock.js new file mode 100644 index 0000000..7944de7 --- /dev/null +++ b/data-mgmt/src/main/webapp/bower_components/angular-mocks/ngMock.js @@ -0,0 +1,2 @@ +require('./angular-mocks'); +module.exports = 'ngMock'; diff --git a/data-mgmt/src/main/webapp/bower_components/angular-mocks/ngMockE2E.js b/data-mgmt/src/main/webapp/bower_components/angular-mocks/ngMockE2E.js new file mode 100644 index 0000000..fc2e539 --- /dev/null +++ b/data-mgmt/src/main/webapp/bower_components/angular-mocks/ngMockE2E.js @@ -0,0 +1,2 @@ +require('./angular-mocks'); +module.exports = 'ngMockE2E'; diff --git a/data-mgmt/src/main/webapp/bower_components/angular-mocks/package.json b/data-mgmt/src/main/webapp/bower_components/angular-mocks/package.json index 530875d..c54bda5 100644 --- a/data-mgmt/src/main/webapp/bower_components/angular-mocks/package.json +++ b/data-mgmt/src/main/webapp/bower_components/angular-mocks/package.json @@ -1,6 +1,6 @@ { "name": "angular-mocks", - "version": "1.3.4", + "version": "1.3.15", "description": "AngularJS mocks for testing", "main": "angular-mocks.js", "scripts": { diff --git a/data-mgmt/src/main/webapp/bower_components/angular-motion/.bower.json b/data-mgmt/src/main/webapp/bower_components/angular-motion/.bower.json deleted file mode 100644 index 3063776..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-motion/.bower.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "angular-motion", - "description": "AngularMotion - Fancy CSS3 animations for AngularJS 1.2+", - "version": "0.3.4", - "keywords": [ - "angular", - "animation" - ], - "homepage": "https://github.com/mgcrea/angular-motion", - "bugs": "https://github.com/mgcrea/angular-motion/issues", - "author": { - "name": "Olivier Louvignes", - "email": "olivier@mg-crea.com", - "url": "https://github.com/mgcrea" - }, - "repository": { - "type": "git", - "url": "https://github.com/mgcrea/angular-motion.git" - }, - "licenses": [ - { - "type": "MIT" - } - ], - "main": [ - "dist/angular-motion.css" - ], - "ignore": [ - "docs", - "test", - "CONTRIBUTING.md" - ], - "dependencies": { - "angular": "^1.2", - "angular-animate": "^1.2" - }, - "devDependencies": { - "bootstrap": "^3.0", - "angular-mocks": "^1.2", - "angular-strap": "^2.0", - "fastclick": "~1.0.3" - }, - "_release": "0.3.4", - "_resolution": { - "type": "version", - "tag": "v0.3.4", - "commit": "a8870e01cc595ee8ab157e3b61aa6a0cb639deb7" - }, - "_source": "git://github.com/mgcrea/angular-motion.git", - "_target": "^0.3.3", - "_originalSource": "angular-motion" -} \ No newline at end of file diff --git a/data-mgmt/src/main/webapp/bower_components/angular-motion/.editorconfig b/data-mgmt/src/main/webapp/bower_components/angular-motion/.editorconfig deleted file mode 100644 index e717f5e..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-motion/.editorconfig +++ /dev/null @@ -1,13 +0,0 @@ -# http://editorconfig.org -root = true - -[*] -indent_style = space -indent_size = 2 -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -[*.md] -trim_trailing_whitespace = false diff --git a/data-mgmt/src/main/webapp/bower_components/angular-motion/.gitignore b/data-mgmt/src/main/webapp/bower_components/angular-motion/.gitignore deleted file mode 100644 index 3699ce3..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-motion/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -.dev/ -.tmp/ -.DS_Store -*.sublime-project -*.sublime-workspace -bower_components/ -node_modules/ -/pages/ -/docs/ -/test/coverage/ -!.gitignore diff --git a/data-mgmt/src/main/webapp/bower_components/angular-motion/.jshintrc b/data-mgmt/src/main/webapp/bower_components/angular-motion/.jshintrc deleted file mode 100644 index f6a8ad3..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-motion/.jshintrc +++ /dev/null @@ -1,28 +0,0 @@ -{ - "node": true, - "browser": true, - "devel": false, - "esnext": true, - "bitwise": true, - "camelcase": true, - "curly": false, - "eqeqeq": true, - "immed": true, - "indent": 2, - "latedef": true, - "newcap": true, - "noarg": true, - "quotmark": "single", - "regexp": true, - "undef": true, - "unused": false, - "strict": true, - "trailing": true, - "smarttabs": true, - "boss": false, - "eqnull": false, - "expr": true, - "globals": { - "angular": false - } -} diff --git a/data-mgmt/src/main/webapp/bower_components/angular-motion/.travis.yml b/data-mgmt/src/main/webapp/bower_components/angular-motion/.travis.yml deleted file mode 100644 index bbf4e4d..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-motion/.travis.yml +++ /dev/null @@ -1,15 +0,0 @@ -language: node_js -node_js: - - "0.10" - -before_script: - - export DISPLAY=:99.0 - - export PHANTOMJS_BIN=/usr/local/phantomjs/bin/phantomjs - - sh -e /etc/init.d/xvfb start - - sleep 3 # give xvfb some time to start - - npm install -gq grunt-cli bower coveralls - - bower install --dev - - date --rfc-2822 - -script: - - grunt jshint test build diff --git a/data-mgmt/src/main/webapp/bower_components/angular-motion/Gruntfile.js b/data-mgmt/src/main/webapp/bower_components/angular-motion/Gruntfile.js deleted file mode 100644 index 8a68c13..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-motion/Gruntfile.js +++ /dev/null @@ -1,475 +0,0 @@ -'use strict'; - -// # Globbing -// for performance reasons we're only matching one level down: -// 'test/spec/{,*/}*.js' -// use this if you want to recursively match all subfolders: -// 'test/spec/**/*.js' - -module.exports = function (grunt) { - - // Load grunt tasks automatically - require('load-grunt-tasks')(grunt); - - // Time how long tasks take. Can help when optimizing build times - // require('time-grunt')(grunt); - - // Define the configuration for all the tasks - grunt.initConfig({ - - // Project settings - pkg: require('./package.json'), - bower: require('./bower.json'), - yo: { - src: 'src', - dist: 'dist', - docs: 'docs', - pages: 'pages' - }, - - // Project meta - meta: { - banner: '/**\n' + - ' * <%= pkg.name %>\n' + - ' * @version v<%= pkg.version %> - <%= grunt.template.today("yyyy-mm-dd") %>\n' + - ' * @link <%= pkg.homepage %>\n' + - ' * @author <%= pkg.author.name %> <<%= pkg.author.email %>>\n' + - ' * @license MIT License, http://www.opensource.org/licenses/MIT\n' + - ' */\n' - }, - - // Watches files for changes and runs tasks based on the changed files - watch: { - - styles: { - options: { - spawn: false - }, - files: ['src/{,*/}*.less', 'docs/styles/{,*/}*.less'], - tasks: ['less:dev', 'autoprefixer'] - }, - gruntfile: { - files: ['Gruntfile.js'] - }, - livereload: { - options: { - livereload: '<%= connect.options.livereload %>' - }, - files: [ - '{docs,.dev,.tmp,<%= yo.src %>}/{,*/}{,docs/}*.html', - '{docs,.dev,.tmp,<%= yo.src %>}/{,*/}*.css', - '{docs,.dev,.tmp,<%= yo.src %>}/{,*/}*.js', - '{docs,<%= yo.src %>}/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' - ] - } - }, - - // The actual grunt server settings - connect: { - options: { - port: 9000, - hostname: '0.0.0.0', - livereload: 35729 - }, - livereload: { - options: { - open: true, - base: ['docs', '.dev', '.tmp', '<%= yo.src %>'] - } - }, - test: { - options: { - port: 9001, - base: ['.tmp', 'test', '<%= yo.src %>'] - } - }, - dist: { - options: { - base: '<%= yo.dist %>' - } - } - }, - - // Make sure code styles are up to par and there are no obvious mistakes - jshint: { - options: { - jshintrc: '.jshintrc', - reporter: require('jshint-stylish') - }, - all: [ - 'Gruntfile.js', - '<%= yo.src %>/scripts/{,*/}*.js' - ], - test: { - options: { - jshintrc: 'test/.jshintrc' - }, - src: ['test/spec/{,*/}*.js'] - } - }, - - // Empties folders to start fresh - clean: { - dist: { - files: [{ - dot: true, - src: [ - '.tmp', - '<%= yo.dist %>/*', - '!<%= yo.dist %>/.git*' - ] - }] - }, - docs: { - files: [{ - dot: true, - src: [ - '.tmp', - '<%= yo.pages %>/*', - '!<%= yo.pages %>/.git*' - ] - }] - }, - server: '.tmp' - }, - - // Compile less stylesheets - less: { - dev: { - options: { - // dumpLineNumbers: 'comments', - }, - files: [{ - expand: true, - flatten: true, - cwd: '<%= yo.src %>/', - src: '{,*/}*.less', - dest: '.tmp/styles/modules/', - ext: '.css' - }, { - src: '<%= yo.src %>/{,*/}*.less', - dest: '.tmp/styles/<%= bower.name %>.css', - }] - }, - dist: { - options: { - cleancss: true - }, - files: [{ - expand: true, - flatten: true, - cwd: '<%= yo.src %>/', - src: '{,*/}*.less', - dest: '.tmp/styles/modules/', - ext: '.min.css' - }, { - src: '<%= yo.src %>/{,*/}*.less', - dest: '.tmp/styles/<%= bower.name %>.min.css', - }] - }, - docs: { - options: { - cleancss: false - }, - files: [{ - expand: true, - cwd: '<%= yo.docs %>/styles/', - src: '*.less', - dest: '.tmp/styles/', - ext: '.css' - }] - } - }, - - // Add vendor prefixed styles - autoprefixer: { - options: { - browsers: ['last 2 versions'] - }, - all: { - files: [{ - expand: true, - cwd: '.tmp/styles/', - src: '{,*/}*.css', - dest: '.tmp/styles/' - }] - } - }, - - // Reads HTML for usemin blocks to enable smart builds that automatically - // concat, minify and revision files. Creates configurations in memory so - // additional tasks can operate on them - useminPrepare: { - html: '<%= yo.docs %>/index.html', - options: { - dest: '<%= yo.pages %>' - } - }, - - // Performs rewrites based on rev and the useminPrepare configuration - usemin: { - html: '<%= yo.pages %>/index.html', - css: ['<%= yo.pages %>/styles/{,*/}*.css'], - options: { - assetsDirs: ['<%= yo.pages %>', '<%= yo.pages %>/images'] - } - }, - - // Embed static ngincludes - nginclude: { - docs: { - files: [{ - src: '<%= yo.docs %>/index.html', - dest: '<%= yo.pages %>/index.html' - }], - options: { - assetsDirs: ['<%= yo.src %>', '<%= yo.docs %>'] - } - } - }, - - // Minify html files - htmlmin: { - options: { - collapseWhitespace: true, - removeComments: false - }, - docs: { - files: [{ - expand: true, - cwd: '<%= yo.pages %>', - src: ['*.html'],//, 'views/{,*/}*.html'], - dest: '<%= yo.pages %>' - }] - } - }, - - // Copies remaining files to places other tasks can use - copy: { - dist: { - files: [{ - expand: true, - cwd: '.tmp/styles/', - dest: '<%= yo.dist %>', - src: '{,*/}*.css' - }] - }, - docs: { - files: [{ - expand: true, - cwd: '<%= yo.docs %>/', - dest: '<%= yo.pages %>', - src: [ - 'images/*', - '1.0/**/*' - ] - }] - } - }, - - // Run some tasks in parallel to speed up the build process - concurrent: { - docs: [ - 'less:docs', - 'uglify:generated', - 'cssmin:generated' - ], - server: [ - 'less:dev' - ], - test: [ - 'less:dev' - ], - dist: [ - 'less:dist', - 'imagemin', - 'svgmin', - 'htmlmin' - ] - }, - - concat: { - // generated: { - // options: { - // banner: '(function(window, document, $, undefined) {\n\'use strict\';\n', - // footer: '\n})(window, document, window.jQuery);\n' - // } - // }, - dist: { - options: { - // Replace all 'use strict' statements in the code with a single one at the top - banner: '(function(window, document, undefined) {\n\'use strict\';\n', - footer: '\n})(window, document);\n', - process: function(src, filepath) { - return '// Source: ' + filepath + '\n' + - src.replace(/(^|\n)[ \t]*('use strict'|"use strict");?\s*/g, '$1'); - } - }, - files: [{ - src: ['<%= yo.src %>/module.js', '<%= yo.src %>/{,*/}*.js'], - dest: '<%= yo.dist %>/<%= pkg.name %>.js' - }, { - src: ['<%= yo.dist %>/modules/{,*/}*.tpl.js'], - dest: '<%= yo.dist %>/<%= pkg.name %>.tpl.js' - }] - }, - banner: { - options: { - banner: '<%= meta.banner %>', - }, - files: [{ - expand: true, - cwd: '<%= yo.dist %>', - src: '{,*/}*.{js,css}', - dest: '<%= yo.dist %>' - }] - }, - docs: { - options: { - banner: '<%= meta.banner %>', - }, - files: [{ - expand: true, - cwd: '<%= yo.pages %>', - src: ['scripts/{demo,docs,angular-strap}*', 'styles/{main}*'], - dest: '<%= yo.pages %>' - }] - } - }, - - // Allow the use of non-minsafe AngularJS files. Automatically makes it - // minsafe compatible so Uglify does not destroy the ng references - ngmin: { - dist: { - files: [{ - src: '<%= yo.dist %>/<%= pkg.name %>.js', - dest: '<%= yo.dist %>/<%= pkg.name %>.js' - }] - }, - modules: { - files: [{ - expand: true, - flatten: true, - cwd: '<%= yo.src %>', - src: '{,*/}*.js', - dest: '<%= yo.dist %>/modules' - }] - }, - docs: { - files: [{ - expand: true, - cwd: '.tmp/concat/scripts', - src: '*.js', - dest: '.tmp/concat/scripts' - }] - } - }, - - ngtemplates: { - docs: { - options: { - module: 'mgcrea.ngMotionDocs', - usemin: 'scripts/docs.tpl.min.js' - }, - files: [{ - cwd: '<%= yo.src %>', - src: '{,*/}docs/*.html', - dest: '.tmp/ngtemplates/src-docs.tpl.js' - }, - { - cwd: '<%= yo.docs %>', - src: 'views/sidebar.html', - dest: '.tmp/ngtemplates/docs-views.tpl.js' - }, - { - cwd: '<%= yo.docs %>', - src: 'views/partials/{,*/}*.html', - dest: '.tmp/ngtemplates/docs-partials.tpl.js' - }] - } - }, - - // Test settings - karma: { - options: { - configFile: 'test/karma.conf.js', - browsers: ['PhantomJS'] - }, - unit: { - singleRun: true, - options: { - reporters: ['dots'] - } - }, - server: { - autoWatch: true - } - }, - - uglify: { - generated: { - options: { - compress: false, - mangle: false, - beautify: true - } - } - } - - }); - - - grunt.registerTask('serve', function (target) { - if (target === 'dist') { - return grunt.task.run(['build', 'connect:dist:keepalive']); - } - - grunt.task.run([ - 'clean:server', - 'concurrent:server', - 'autoprefixer', - 'connect:livereload', - 'watch' - ]); - }); - - grunt.registerTask('test', [ - 'clean:server', - 'connect:test', - 'karma:unit' - ]); - - grunt.registerTask('build', [ - 'clean:dist', - 'less:dev', - 'less:dist', - 'autoprefixer', - 'copy:dist', - 'concat:banner' - ]); - - grunt.registerTask('docs', [ - 'clean:docs', - 'useminPrepare', - 'less:dev', - 'less:docs', - 'autoprefixer', - 'nginclude:docs', - 'ngtemplates:docs', - 'concat:generated', - 'ngmin:docs', - 'copy:docs', - 'cssmin:generated', - 'uglify:generated', - 'concat:docs', - 'usemin', - // 'htmlmin:docs' // breaks code preview - ]); - - grunt.registerTask('default', [ - 'newer:jshint', - 'test', - 'build' - ]); - -}; diff --git a/data-mgmt/src/main/webapp/bower_components/angular-motion/LICENSE.md b/data-mgmt/src/main/webapp/bower_components/angular-motion/LICENSE.md deleted file mode 100644 index 6615f14..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-motion/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License - -Copyright (c) 2014 Olivier Louvignes http://olouv.com - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/data-mgmt/src/main/webapp/bower_components/angular-motion/README.md b/data-mgmt/src/main/webapp/bower_components/angular-motion/README.md deleted file mode 100644 index e1b24ea..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-motion/README.md +++ /dev/null @@ -1,95 +0,0 @@ -# [AngularMotion](http://mgcrea.github.io/angular-motion) [![Build Status](https://secure.travis-ci.org/mgcrea/angular-motion.svg?branch=master)](http://travis-ci.org/#!/mgcrea/angular-motion) [![devDependency Status](https://david-dm.org/mgcrea/angular-motion/dev-status.svg)](https://david-dm.org/mgcrea/angular-motion#info=devDependencies) - -[![Banner](http://mgcrea.github.io/angular-motion/images/snippet.png)](http://mgcrea.github.io/angular-motion) - -AngularMotion is an animation starter-kit built for [AngularJS 1.2.0+](https://github.com/angular/angular.js). - -It's a spin off from [AngularStrap](http://mgcrea.github.io/angular-strap) v2 release work. - - -## Documentation and examples - -+ Check the [documentation](http://mgcrea.github.io/angular-motion) and [changelog](https://github.com/mgcrea/angular-motion/releases). - - - -## Quick start - -+ Include the required libraries (cdn/local) - -> -``` html - - - -``` - -+ Inject the `ngAnimate` module into your app - -> -``` javascript -angular.module('myApp', ['ngAnimate']); -``` - - -## Developers - -Clone the repo, `git clone git://github.com/mgcrea/angular-motion.git`, [download the latest release](https://github.com/mgcrea/angular-motion/zipball/master) or install with bower `bower install angular-motion --save`. - -AngularMotion is tested with `karma` against the latest stable release of AngularJS. - -> - $ npm install grunt-cli --global - $ npm install --dev - $ grunt test - -You can build the latest version using `grunt`. - -> - $ grunt build - -You can quickly hack around (the docs) with: - -> - $ grunt serve - - - -## Contributing - -Please submit all pull requests the against master branch. If your unit test contains JavaScript patches or features, you should include relevant unit tests. Thanks! - - - -## Authors - -**Olivier Louvignes** - -+ http://olouv.com -+ http://github.com/mgcrea - - - -## Copyright and license - - The MIT License - - Copyright (c) 2012 Olivier Louvignes - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. diff --git a/data-mgmt/src/main/webapp/bower_components/angular-motion/bower.json b/data-mgmt/src/main/webapp/bower_components/angular-motion/bower.json deleted file mode 100644 index dc19436..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-motion/bower.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "angular-motion", - "description": "AngularMotion - Fancy CSS3 animations for AngularJS 1.2+", - "version": "0.3.2", - "keywords": [ - "angular", - "animation" - ], - "homepage": "https://github.com/mgcrea/angular-motion", - "bugs": "https://github.com/mgcrea/angular-motion/issues", - "author": { - "name": "Olivier Louvignes", - "email": "olivier@mg-crea.com", - "url": "https://github.com/mgcrea" - }, - "repository": { - "type": "git", - "url": "https://github.com/mgcrea/angular-motion.git" - }, - "licenses": [ - { - "type": "MIT" - } - ], - "main": [ - "dist/angular-motion.css" - ], - "ignore": [ - "docs", - "test", - "CONTRIBUTING.md" - ], - "dependencies": { - "angular": "^1.2", - "angular-animate": "^1.2" - }, - "devDependencies": { - "bootstrap": "^3.0", - "angular-mocks": "^1.2", - "angular-strap": "^2.0", - "fastclick": "~1.0.3" - } -} diff --git a/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/angular-motion.css b/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/angular-motion.css deleted file mode 100644 index dd7938a..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/angular-motion.css +++ /dev/null @@ -1,1026 +0,0 @@ -/** - * angular-motion - * @version v0.3.4 - 2014-10-14 - * @link https://github.com/mgcrea/angular-motion - * @author Olivier Louvignes - * @license MIT License, http://www.opensource.org/licenses/MIT - */ -.am-collapse { - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: ease; - animation-timing-function: ease; - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; - opacity: 1; -} -.am-collapse.am-collapse-add, -.am-collapse.ng-hide-remove, -.am-collapse.ng-move { - -webkit-animation-name: expand; - animation-name: expand; -} -.am-collapse.am-collapse-remove, -.am-collapse.ng-hide { - -webkit-animation-name: collapse; - animation-name: collapse; -} -.am-collapse.ng-enter { - visibility: hidden; - -webkit-animation-name: expand; - animation-name: expand; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-collapse.ng-enter.ng-enter-active { - visibility: visible; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-collapse.ng-leave { - -webkit-animation-name: collapse; - animation-name: collapse; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-collapse.ng-leave.ng-leave-active { - -webkit-animation-play-state: running; - animation-play-state: running; -} -@-webkit-keyframes expand { - from { - max-height: 0px; - } - to { - max-height: 500px; - } -} -@keyframes expand { - from { - max-height: 0px; - } - to { - max-height: 500px; - } -} -@-webkit-keyframes collapse { - from { - max-height: 500px; - } - to { - max-height: 0px; - } -} -@keyframes collapse { - from { - max-height: 500px; - } - to { - max-height: 0px; - } -} -.panel-collapse.am-collapse.in-remove { - -webkit-animation-name: collapse; - animation-name: collapse; - display: block; -} -.panel-collapse.am-collapse.in-add { - -webkit-animation-name: expand; - animation-name: expand; -} - -.am-fade-and-scale { - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; -} -.am-fade-and-scale.ng-enter, -.am-fade-and-scale.am-fade-and-scale-add, -.am-fade-and-scale.ng-hide-remove, -.am-fade-and-scale.ng-move { - -webkit-animation-name: fadeAndScaleIn; - animation-name: fadeAndScaleIn; -} -.am-fade-and-scale.ng-leave, -.am-fade-and-scale.am-fade-and-scale-remove, -.am-fade-and-scale.ng-hide { - -webkit-animation-name: fadeAndScaleOut; - animation-name: fadeAndScaleOut; -} -.am-fade-and-scale.ng-enter { - visibility: hidden; - -webkit-animation-name: fadeAndScaleIn; - animation-name: fadeAndScaleIn; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-fade-and-scale.ng-enter.ng-enter-active { - visibility: visible; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-fade-and-scale.ng-leave { - -webkit-animation-name: fadeAndScaleOut; - animation-name: fadeAndScaleOut; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-fade-and-scale.ng-leave.ng-leave-active { - -webkit-animation-play-state: running; - animation-play-state: running; -} -@-webkit-keyframes fadeAndScaleIn { - from { - opacity: 0; - -webkit-transform: scale(0.7); - transform: scale(0.7); - } - to { - opacity: 1; - } -} -@keyframes fadeAndScaleIn { - from { - opacity: 0; - -webkit-transform: scale(0.7); - transform: scale(0.7); - } - to { - opacity: 1; - } -} -@-webkit-keyframes fadeAndScaleOut { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: scale(0.7); - transform: scale(0.7); - } -} -@keyframes fadeAndScaleOut { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: scale(0.7); - transform: scale(0.7); - } -} - -.am-fade-and-slide-top { - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; -} -.am-fade-and-slide-top.am-fade-and-slide-top-add, -.am-fade-and-slide-top.ng-hide-remove, -.am-fade-and-slide-top.ng-move { - -webkit-animation-name: fadeAndSlideFromTop; - animation-name: fadeAndSlideFromTop; -} -.am-fade-and-slide-top.am-fade-and-slide-top-remove, -.am-fade-and-slide-top.ng-hide { - -webkit-animation-name: fadeAndSlideToTop; - animation-name: fadeAndSlideToTop; -} -.am-fade-and-slide-top.ng-enter { - visibility: hidden; - -webkit-animation-name: fadeAndSlideFromTop; - animation-name: fadeAndSlideFromTop; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-fade-and-slide-top.ng-enter.ng-enter-active { - visibility: visible; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-fade-and-slide-top.ng-leave { - -webkit-animation-name: fadeAndSlideToTop; - animation-name: fadeAndSlideToTop; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-fade-and-slide-top.ng-leave.ng-leave-active { - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-fade-and-slide-right { - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; -} -.am-fade-and-slide-right.am-fade-and-slide-right-add, -.am-fade-and-slide-right.ng-hide-remove, -.am-fade-and-slide-right.ng-move { - -webkit-animation-name: fadeAndSlideFromRight; - animation-name: fadeAndSlideFromRight; -} -.am-fade-and-slide-right.am-fade-and-slide-right-remove, -.am-fade-and-slide-right.ng-hide { - -webkit-animation-name: fadeAndSlideToRight; - animation-name: fadeAndSlideToRight; -} -.am-fade-and-slide-right.ng-enter { - visibility: hidden; - -webkit-animation-name: fadeAndSlideFromRight; - animation-name: fadeAndSlideFromRight; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-fade-and-slide-right.ng-enter.ng-enter-active { - visibility: visible; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-fade-and-slide-right.ng-leave { - -webkit-animation-name: fadeAndSlideToRight; - animation-name: fadeAndSlideToRight; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-fade-and-slide-right.ng-leave.ng-leave-active { - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-fade-and-slide-bottom { - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; -} -.am-fade-and-slide-bottom.am-fade-and-slide-bottom-add, -.am-fade-and-slide-bottom.ng-hide-remove, -.am-fade-and-slide-bottom.ng-move { - -webkit-animation-name: fadeAndSlideFromBottom; - animation-name: fadeAndSlideFromBottom; -} -.am-fade-and-slide-bottom.am-fade-and-slide-bottom-remove, -.am-fade-and-slide-bottom.ng-hide { - -webkit-animation-name: fadeAndSlideToBottom; - animation-name: fadeAndSlideToBottom; -} -.am-fade-and-slide-bottom.ng-enter { - visibility: hidden; - -webkit-animation-name: fadeAndSlideFromBottom; - animation-name: fadeAndSlideFromBottom; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-fade-and-slide-bottom.ng-enter.ng-enter-active { - visibility: visible; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-fade-and-slide-bottom.ng-leave { - -webkit-animation-name: fadeAndSlideToBottom; - animation-name: fadeAndSlideToBottom; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-fade-and-slide-bottom.ng-leave.ng-leave-active { - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-fade-and-slide-left { - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; -} -.am-fade-and-slide-left.am-fade-and-slide-left-add, -.am-fade-and-slide-left.ng-hide-remove, -.am-fade-and-slide-left.ng-move { - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; - -webkit-animation-name: fadeAndSlideFromLeft; - animation-name: fadeAndSlideFromLeft; -} -.am-fade-and-slide-left.am-fade-and-slide-left-remove, -.am-fade-and-slide-left.ng-hide { - -webkit-animation-name: fadeAndSlideToLeft; - animation-name: fadeAndSlideToLeft; -} -.am-fade-and-slide-left.ng-enter { - visibility: hidden; - -webkit-animation-name: fadeAndSlideFromLeft; - animation-name: fadeAndSlideFromLeft; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-fade-and-slide-left.ng-enter.ng-enter-active { - visibility: visible; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-fade-and-slide-left.ng-leave { - -webkit-animation-name: fadeAndSlideToLeft; - animation-name: fadeAndSlideToLeft; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-fade-and-slide-left.ng-leave.ng-leave-active { - -webkit-animation-play-state: running; - animation-play-state: running; -} -@-webkit-keyframes fadeAndSlideFromTop { - from { - opacity: 0; - -webkit-transform: translateY(-20%); - transform: translateY(-20%); - } - to { - opacity: 1; - } -} -@keyframes fadeAndSlideFromTop { - from { - opacity: 0; - -webkit-transform: translateY(-20%); - transform: translateY(-20%); - } - to { - opacity: 1; - } -} -@-webkit-keyframes fadeAndSlideToTop { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translateY(-20%); - transform: translateY(-20%); - } -} -@keyframes fadeAndSlideToTop { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translateY(-20%); - transform: translateY(-20%); - } -} -@-webkit-keyframes fadeAndSlideFromRight { - from { - opacity: 0; - -webkit-transform: translateX(20%); - transform: translateX(20%); - } - to { - opacity: 1; - } -} -@keyframes fadeAndSlideFromRight { - from { - opacity: 0; - -webkit-transform: translateX(20%); - transform: translateX(20%); - } - to { - opacity: 1; - } -} -@-webkit-keyframes fadeAndSlideToRight { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translateX(20%); - transform: translateX(20%); - } -} -@keyframes fadeAndSlideToRight { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translateX(20%); - transform: translateX(20%); - } -} -@-webkit-keyframes fadeAndSlideFromBottom { - from { - opacity: 0; - -webkit-transform: translateY(20%); - transform: translateY(20%); - } - to { - opacity: 1; - } -} -@keyframes fadeAndSlideFromBottom { - from { - opacity: 0; - -webkit-transform: translateY(20%); - transform: translateY(20%); - } - to { - opacity: 1; - } -} -@-webkit-keyframes fadeAndSlideToBottom { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translateY(20%); - transform: translateY(20%); - } -} -@keyframes fadeAndSlideToBottom { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translateY(20%); - transform: translateY(20%); - } -} -@-webkit-keyframes fadeAndSlideFromLeft { - from { - opacity: 0; - -webkit-transform: translateX(-20%); - transform: translateX(-20%); - } - to { - opacity: 1; - } -} -@keyframes fadeAndSlideFromLeft { - from { - opacity: 0; - -webkit-transform: translateX(-20%); - transform: translateX(-20%); - } - to { - opacity: 1; - } -} -@-webkit-keyframes fadeAndSlideToLeft { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translateX(-20%); - transform: translateX(-20%); - } -} -@keyframes fadeAndSlideToLeft { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translateX(-20%); - transform: translateX(-20%); - } -} - -.am-fade { - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: linear; - animation-timing-function: linear; - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; - opacity: 1; -} -.am-fade.am-fade-add, -.am-fade.ng-hide-remove, -.am-fade.ng-move { - -webkit-animation-name: fadeIn; - animation-name: fadeIn; -} -.am-fade.am-fade-remove, -.am-fade.ng-hide { - -webkit-animation-name: fadeOut; - animation-name: fadeOut; -} -.am-fade.ng-enter { - visibility: hidden; - -webkit-animation-name: fadeIn; - animation-name: fadeIn; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-fade.ng-enter.ng-enter-active { - visibility: visible; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-fade.ng-leave { - -webkit-animation-name: fadeOut; - animation-name: fadeOut; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-fade.ng-leave.ng-leave-active { - -webkit-animation-play-state: running; - animation-play-state: running; -} -@-webkit-keyframes fadeIn { - from { - opacity: 0; - } - to { - opacity: 1; - } -} -@keyframes fadeIn { - from { - opacity: 0; - } - to { - opacity: 1; - } -} -@-webkit-keyframes fadeOut { - from { - opacity: 1; - } - to { - opacity: 0; - } -} -@keyframes fadeOut { - from { - opacity: 1; - } - to { - opacity: 0; - } -} -.tab-pane.am-fade.active-remove { - display: none !important; -} -.tab-pane.am-fade.active-add { - -webkit-animation-name: fadeIn; - animation-name: fadeIn; -} -.modal-backdrop.am-fade, -.aside-backdrop.am-fade { - background: rgba(0, 0, 0, 0.5); - -webkit-animation-duration: 0.15s; - animation-duration: 0.15s; -} -.modal-backdrop.am-fade.ng-leave, -.aside-backdrop.am-fade.ng-leave { - -webkit-animation-delay: 0.3s; - animation-delay: 0.3s; -} - -.am-flip-x { - -webkit-animation-duration: 0.4s; - animation-duration: 0.4s; - -webkit-animation-timing-function: ease; - animation-timing-function: ease; - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; -} -.am-flip-x.am-flip-x-add, -.am-flip-x.ng-hide-remove, -.am-flip-x.ng-move { - -webkit-animation-name: flipInXBounce; - animation-name: flipInXBounce; -} -.am-flip-x.am-flip-x-remove, -.am-flip-x.ng-hide { - -webkit-animation-name: flipOutX; - animation-name: flipOutX; -} -.am-flip-x.ng-enter { - visibility: hidden; - -webkit-animation-name: flipInXBounce; - animation-name: flipInXBounce; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-flip-x.ng-enter.ng-enter-active { - visibility: visible; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-flip-x.ng-leave { - -webkit-animation-name: flipOutX; - animation-name: flipOutX; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-flip-x.ng-leave.ng-leave-active { - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-flip-x-linear { - -webkit-animation-duration: 0.4s; - animation-duration: 0.4s; - -webkit-animation-timing-function: ease; - animation-timing-function: ease; - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; -} -.am-flip-x-linear.am-flip-x-add, -.am-flip-x-linear.ng-hide-remove, -.am-flip-x-linear.ng-move { - -webkit-animation-name: flipInX; - animation-name: flipInX; -} -.am-flip-x-linear.am-flip-x-remove, -.am-flip-x-linear.ng-hide { - -webkit-animation-name: flipOutX; - animation-name: flipOutX; -} -.am-flip-x-linear.ng-enter { - visibility: hidden; - -webkit-animation-name: flipInX; - animation-name: flipInX; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-flip-x-linear.ng-enter.ng-enter-active { - visibility: visible; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-flip-x-linear.ng-leave { - -webkit-animation-name: flipOutX; - animation-name: flipOutX; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-flip-x-linear.ng-leave.ng-leave-active { - -webkit-animation-play-state: running; - animation-play-state: running; -} -@-webkit-keyframes flipInX { - from { - opacity: 0; - -webkit-transform: perspective(400px) rotateX(90deg); - transform: perspective(400px) rotateX(90deg); - } - to { - opacity: 1; - -webkit-transform: perspective(400px) rotateX(0deg); - transform: perspective(400px) rotateX(0deg); - } -} -@keyframes flipInX { - from { - opacity: 0; - -webkit-transform: perspective(400px) rotateX(90deg); - transform: perspective(400px) rotateX(90deg); - } - to { - opacity: 1; - -webkit-transform: perspective(400px) rotateX(0deg); - transform: perspective(400px) rotateX(0deg); - } -} -@-webkit-keyframes flipInXBounce { - from { - opacity: 0; - -webkit-transform: perspective(400px) rotateX(90deg); - transform: perspective(400px) rotateX(90deg); - } - 40% { - -webkit-transform: perspective(400px) rotateX(-10deg); - transform: perspective(400px) rotateX(-10deg); - } - 70% { - -webkit-transform: perspective(400px) rotateX(10deg); - transform: perspective(400px) rotateX(10deg); - } - to { - opacity: 1; - -webkit-transform: perspective(400px) rotateX(0deg); - transform: perspective(400px) rotateX(0deg); - } -} -@keyframes flipInXBounce { - from { - opacity: 0; - -webkit-transform: perspective(400px) rotateX(90deg); - transform: perspective(400px) rotateX(90deg); - } - 40% { - -webkit-transform: perspective(400px) rotateX(-10deg); - transform: perspective(400px) rotateX(-10deg); - } - 70% { - -webkit-transform: perspective(400px) rotateX(10deg); - transform: perspective(400px) rotateX(10deg); - } - to { - opacity: 1; - -webkit-transform: perspective(400px) rotateX(0deg); - transform: perspective(400px) rotateX(0deg); - } -} -@-webkit-keyframes flipOutX { - from { - opacity: 1; - -webkit-transform: perspective(400px) rotateX(0deg); - transform: perspective(400px) rotateX(0deg); - } - to { - opacity: 0; - -webkit-transform: perspective(400px) rotateX(90deg); - transform: perspective(400px) rotateX(90deg); - } -} -@keyframes flipOutX { - from { - opacity: 1; - -webkit-transform: perspective(400px) rotateX(0deg); - transform: perspective(400px) rotateX(0deg); - } - to { - opacity: 0; - -webkit-transform: perspective(400px) rotateX(90deg); - transform: perspective(400px) rotateX(90deg); - } -} - -.am-slide-top { - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; -} -.am-slide-top.am-slide-top-add, -.am-slide-top.ng-hide-remove, -.am-slide-top.ng-move { - -webkit-animation-name: slideFromTop; - animation-name: slideFromTop; -} -.am-slide-top.am-slide-top-remove, -.am-slide-top.ng-hide { - -webkit-animation-name: slideToTop; - animation-name: slideToTop; -} -.am-slide-top.ng-enter { - visibility: hidden; - -webkit-animation-name: slideFromTop; - animation-name: slideFromTop; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-slide-top.ng-enter.ng-enter-active { - visibility: visible; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-slide-top.ng-leave { - -webkit-animation-name: slideToTop; - animation-name: slideToTop; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-slide-top.ng-leave.ng-leave-active { - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-slide-right { - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; -} -.am-slide-right.am-slide-right-add, -.am-slide-right.ng-hide-remove, -.am-slide-right.ng-move { - -webkit-animation-name: slideFromRight; - animation-name: slideFromRight; -} -.am-slide-right.am-slide-right-remove, -.am-slide-right.ng-hide { - -webkit-animation-name: slideToRight; - animation-name: slideToRight; -} -.am-slide-right.ng-enter { - visibility: hidden; - -webkit-animation-name: slideFromRight; - animation-name: slideFromRight; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-slide-right.ng-enter.ng-enter-active { - visibility: visible; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-slide-right.ng-leave { - -webkit-animation-name: slideToRight; - animation-name: slideToRight; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-slide-right.ng-leave.ng-leave-active { - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-slide-bottom { - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; -} -.am-slide-bottom.am-slide-bottom-add, -.am-slide-bottom.ng-hide-remove, -.am-slide-bottom.ng-move { - -webkit-animation-name: slideFromBottom; - animation-name: slideFromBottom; -} -.am-slide-bottom.am-slide-bottom-remove, -.am-slide-bottom.ng-hide { - -webkit-animation-name: slideToBottom; - animation-name: slideToBottom; -} -.am-slide-bottom.ng-enter { - visibility: hidden; - -webkit-animation-name: slideFromBottom; - animation-name: slideFromBottom; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-slide-bottom.ng-enter.ng-enter-active { - visibility: visible; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-slide-bottom.ng-leave { - -webkit-animation-name: slideToBottom; - animation-name: slideToBottom; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-slide-bottom.ng-leave.ng-leave-active { - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-slide-left { - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; -} -.am-slide-left.am-slide-left-add, -.am-slide-left.ng-hide-remove, -.am-slide-left.ng-move { - -webkit-animation-name: slideFromLeft; - animation-name: slideFromLeft; -} -.am-slide-left.am-slide-left-remove, -.am-slide-left.ng-hide { - -webkit-animation-name: slideToLeft; - animation-name: slideToLeft; -} -.am-slide-left.ng-enter { - visibility: hidden; - -webkit-animation-name: slideFromLeft; - animation-name: slideFromLeft; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-slide-left.ng-enter.ng-enter-active { - visibility: visible; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-slide-left.ng-leave { - -webkit-animation-name: slideToLeft; - animation-name: slideToLeft; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-slide-left.ng-leave.ng-leave-active { - -webkit-animation-play-state: running; - animation-play-state: running; -} -@-webkit-keyframes slideFromTop { - from { - -webkit-transform: translateY(-100%); - transform: translateY(-100%); - } -} -@keyframes slideFromTop { - from { - -webkit-transform: translateY(-100%); - transform: translateY(-100%); - } -} -@-webkit-keyframes slideToTop { - to { - -webkit-transform: translateY(-100%); - transform: translateY(-100%); - } -} -@keyframes slideToTop { - to { - -webkit-transform: translateY(-100%); - transform: translateY(-100%); - } -} -@-webkit-keyframes slideFromRight { - from { - -webkit-transform: translateX(100%); - transform: translateX(100%); - } -} -@keyframes slideFromRight { - from { - -webkit-transform: translateX(100%); - transform: translateX(100%); - } -} -@-webkit-keyframes slideToRight { - to { - -webkit-transform: translateX(100%); - transform: translateX(100%); - } -} -@keyframes slideToRight { - to { - -webkit-transform: translateX(100%); - transform: translateX(100%); - } -} -@-webkit-keyframes slideFromBottom { - from { - -webkit-transform: translateY(100%); - transform: translateY(100%); - } -} -@keyframes slideFromBottom { - from { - -webkit-transform: translateY(100%); - transform: translateY(100%); - } -} -@-webkit-keyframes slideToBottom { - to { - -webkit-transform: translateY(100%); - transform: translateY(100%); - } -} -@keyframes slideToBottom { - to { - -webkit-transform: translateY(100%); - transform: translateY(100%); - } -} -@-webkit-keyframes slideFromLeft { - from { - -webkit-transform: translateX(-100%); - transform: translateX(-100%); - } -} -@keyframes slideFromLeft { - from { - -webkit-transform: translateX(-100%); - transform: translateX(-100%); - } -} -@-webkit-keyframes slideToLeft { - to { - -webkit-transform: translateX(-100%); - transform: translateX(-100%); - } -} -@keyframes slideToLeft { - to { - -webkit-transform: translateX(-100%); - transform: translateX(-100%); - } -} diff --git a/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/angular-motion.min.css b/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/angular-motion.min.css deleted file mode 100644 index be482dd..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/angular-motion.min.css +++ /dev/null @@ -1,8 +0,0 @@ -/** - * angular-motion - * @version v0.3.4 - 2014-10-14 - * @link https://github.com/mgcrea/angular-motion - * @author Olivier Louvignes - * @license MIT License, http://www.opensource.org/licenses/MIT - */ -.am-collapse{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease;animation-timing-function:ease;-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards;opacity:1}.am-collapse.am-collapse-add,.am-collapse.ng-hide-remove,.am-collapse.ng-move{-webkit-animation-name:expand;animation-name:expand}.am-collapse.am-collapse-remove,.am-collapse.ng-hide{-webkit-animation-name:collapse;animation-name:collapse}.am-collapse.ng-enter{visibility:hidden;-webkit-animation-name:expand;animation-name:expand;-webkit-animation-play-state:paused;animation-play-state:paused}.am-collapse.ng-enter.ng-enter-active{visibility:visible;-webkit-animation-play-state:running;animation-play-state:running}.am-collapse.ng-leave{-webkit-animation-name:collapse;animation-name:collapse;-webkit-animation-play-state:paused;animation-play-state:paused}.am-collapse.ng-leave.ng-leave-active{-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes expand{from{max-height:0}to{max-height:500px}}@keyframes expand{from{max-height:0}to{max-height:500px}}@-webkit-keyframes collapse{from{max-height:500px}to{max-height:0}}@keyframes collapse{from{max-height:500px}to{max-height:0}}.panel-collapse.am-collapse.in-remove{-webkit-animation-name:collapse;animation-name:collapse;display:block}.panel-collapse.am-collapse.in-add{-webkit-animation-name:expand;animation-name:expand}.am-fade-and-scale{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards}.am-fade-and-scale.ng-enter,.am-fade-and-scale.am-fade-and-scale-add,.am-fade-and-scale.ng-hide-remove,.am-fade-and-scale.ng-move{-webkit-animation-name:fadeAndScaleIn;animation-name:fadeAndScaleIn}.am-fade-and-scale.ng-leave,.am-fade-and-scale.am-fade-and-scale-remove,.am-fade-and-scale.ng-hide{-webkit-animation-name:fadeAndScaleOut;animation-name:fadeAndScaleOut}.am-fade-and-scale.ng-enter{visibility:hidden;-webkit-animation-name:fadeAndScaleIn;animation-name:fadeAndScaleIn;-webkit-animation-play-state:paused;animation-play-state:paused}.am-fade-and-scale.ng-enter.ng-enter-active{visibility:visible;-webkit-animation-play-state:running;animation-play-state:running}.am-fade-and-scale.ng-leave{-webkit-animation-name:fadeAndScaleOut;animation-name:fadeAndScaleOut;-webkit-animation-play-state:paused;animation-play-state:paused}.am-fade-and-scale.ng-leave.ng-leave-active{-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes fadeAndScaleIn{from{opacity:0;-webkit-transform:scale(0.7);transform:scale(0.7)}to{opacity:1}}@keyframes fadeAndScaleIn{from{opacity:0;-webkit-transform:scale(0.7);transform:scale(0.7)}to{opacity:1}}@-webkit-keyframes fadeAndScaleOut{from{opacity:1}to{opacity:0;-webkit-transform:scale(0.7);transform:scale(0.7)}}@keyframes fadeAndScaleOut{from{opacity:1}to{opacity:0;-webkit-transform:scale(0.7);transform:scale(0.7)}}.am-fade-and-slide-top{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards}.am-fade-and-slide-top.am-fade-and-slide-top-add,.am-fade-and-slide-top.ng-hide-remove,.am-fade-and-slide-top.ng-move{-webkit-animation-name:fadeAndSlideFromTop;animation-name:fadeAndSlideFromTop}.am-fade-and-slide-top.am-fade-and-slide-top-remove,.am-fade-and-slide-top.ng-hide{-webkit-animation-name:fadeAndSlideToTop;animation-name:fadeAndSlideToTop}.am-fade-and-slide-top.ng-enter{visibility:hidden;-webkit-animation-name:fadeAndSlideFromTop;animation-name:fadeAndSlideFromTop;-webkit-animation-play-state:paused;animation-play-state:paused}.am-fade-and-slide-top.ng-enter.ng-enter-active{visibility:visible;-webkit-animation-play-state:running;animation-play-state:running}.am-fade-and-slide-top.ng-leave{-webkit-animation-name:fadeAndSlideToTop;animation-name:fadeAndSlideToTop;-webkit-animation-play-state:paused;animation-play-state:paused}.am-fade-and-slide-top.ng-leave.ng-leave-active{-webkit-animation-play-state:running;animation-play-state:running}.am-fade-and-slide-right{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards}.am-fade-and-slide-right.am-fade-and-slide-right-add,.am-fade-and-slide-right.ng-hide-remove,.am-fade-and-slide-right.ng-move{-webkit-animation-name:fadeAndSlideFromRight;animation-name:fadeAndSlideFromRight}.am-fade-and-slide-right.am-fade-and-slide-right-remove,.am-fade-and-slide-right.ng-hide{-webkit-animation-name:fadeAndSlideToRight;animation-name:fadeAndSlideToRight}.am-fade-and-slide-right.ng-enter{visibility:hidden;-webkit-animation-name:fadeAndSlideFromRight;animation-name:fadeAndSlideFromRight;-webkit-animation-play-state:paused;animation-play-state:paused}.am-fade-and-slide-right.ng-enter.ng-enter-active{visibility:visible;-webkit-animation-play-state:running;animation-play-state:running}.am-fade-and-slide-right.ng-leave{-webkit-animation-name:fadeAndSlideToRight;animation-name:fadeAndSlideToRight;-webkit-animation-play-state:paused;animation-play-state:paused}.am-fade-and-slide-right.ng-leave.ng-leave-active{-webkit-animation-play-state:running;animation-play-state:running}.am-fade-and-slide-bottom{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards}.am-fade-and-slide-bottom.am-fade-and-slide-bottom-add,.am-fade-and-slide-bottom.ng-hide-remove,.am-fade-and-slide-bottom.ng-move{-webkit-animation-name:fadeAndSlideFromBottom;animation-name:fadeAndSlideFromBottom}.am-fade-and-slide-bottom.am-fade-and-slide-bottom-remove,.am-fade-and-slide-bottom.ng-hide{-webkit-animation-name:fadeAndSlideToBottom;animation-name:fadeAndSlideToBottom}.am-fade-and-slide-bottom.ng-enter{visibility:hidden;-webkit-animation-name:fadeAndSlideFromBottom;animation-name:fadeAndSlideFromBottom;-webkit-animation-play-state:paused;animation-play-state:paused}.am-fade-and-slide-bottom.ng-enter.ng-enter-active{visibility:visible;-webkit-animation-play-state:running;animation-play-state:running}.am-fade-and-slide-bottom.ng-leave{-webkit-animation-name:fadeAndSlideToBottom;animation-name:fadeAndSlideToBottom;-webkit-animation-play-state:paused;animation-play-state:paused}.am-fade-and-slide-bottom.ng-leave.ng-leave-active{-webkit-animation-play-state:running;animation-play-state:running}.am-fade-and-slide-left{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards}.am-fade-and-slide-left.am-fade-and-slide-left-add,.am-fade-and-slide-left.ng-hide-remove,.am-fade-and-slide-left.ng-move{-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards;-webkit-animation-name:fadeAndSlideFromLeft;animation-name:fadeAndSlideFromLeft}.am-fade-and-slide-left.am-fade-and-slide-left-remove,.am-fade-and-slide-left.ng-hide{-webkit-animation-name:fadeAndSlideToLeft;animation-name:fadeAndSlideToLeft}.am-fade-and-slide-left.ng-enter{visibility:hidden;-webkit-animation-name:fadeAndSlideFromLeft;animation-name:fadeAndSlideFromLeft;-webkit-animation-play-state:paused;animation-play-state:paused}.am-fade-and-slide-left.ng-enter.ng-enter-active{visibility:visible;-webkit-animation-play-state:running;animation-play-state:running}.am-fade-and-slide-left.ng-leave{-webkit-animation-name:fadeAndSlideToLeft;animation-name:fadeAndSlideToLeft;-webkit-animation-play-state:paused;animation-play-state:paused}.am-fade-and-slide-left.ng-leave.ng-leave-active{-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes fadeAndSlideFromTop{from{opacity:0;-webkit-transform:translateY(-20%);transform:translateY(-20%)}to{opacity:1}}@keyframes fadeAndSlideFromTop{from{opacity:0;-webkit-transform:translateY(-20%);transform:translateY(-20%)}to{opacity:1}}@-webkit-keyframes fadeAndSlideToTop{from{opacity:1}to{opacity:0;-webkit-transform:translateY(-20%);transform:translateY(-20%)}}@keyframes fadeAndSlideToTop{from{opacity:1}to{opacity:0;-webkit-transform:translateY(-20%);transform:translateY(-20%)}}@-webkit-keyframes fadeAndSlideFromRight{from{opacity:0;-webkit-transform:translateX(20%);transform:translateX(20%)}to{opacity:1}}@keyframes fadeAndSlideFromRight{from{opacity:0;-webkit-transform:translateX(20%);transform:translateX(20%)}to{opacity:1}}@-webkit-keyframes fadeAndSlideToRight{from{opacity:1}to{opacity:0;-webkit-transform:translateX(20%);transform:translateX(20%)}}@keyframes fadeAndSlideToRight{from{opacity:1}to{opacity:0;-webkit-transform:translateX(20%);transform:translateX(20%)}}@-webkit-keyframes fadeAndSlideFromBottom{from{opacity:0;-webkit-transform:translateY(20%);transform:translateY(20%)}to{opacity:1}}@keyframes fadeAndSlideFromBottom{from{opacity:0;-webkit-transform:translateY(20%);transform:translateY(20%)}to{opacity:1}}@-webkit-keyframes fadeAndSlideToBottom{from{opacity:1}to{opacity:0;-webkit-transform:translateY(20%);transform:translateY(20%)}}@keyframes fadeAndSlideToBottom{from{opacity:1}to{opacity:0;-webkit-transform:translateY(20%);transform:translateY(20%)}}@-webkit-keyframes fadeAndSlideFromLeft{from{opacity:0;-webkit-transform:translateX(-20%);transform:translateX(-20%)}to{opacity:1}}@keyframes fadeAndSlideFromLeft{from{opacity:0;-webkit-transform:translateX(-20%);transform:translateX(-20%)}to{opacity:1}}@-webkit-keyframes fadeAndSlideToLeft{from{opacity:1}to{opacity:0;-webkit-transform:translateX(-20%);transform:translateX(-20%)}}@keyframes fadeAndSlideToLeft{from{opacity:1}to{opacity:0;-webkit-transform:translateX(-20%);transform:translateX(-20%)}}.am-fade{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards;opacity:1}.am-fade.am-fade-add,.am-fade.ng-hide-remove,.am-fade.ng-move{-webkit-animation-name:fadeIn;animation-name:fadeIn}.am-fade.am-fade-remove,.am-fade.ng-hide{-webkit-animation-name:fadeOut;animation-name:fadeOut}.am-fade.ng-enter{visibility:hidden;-webkit-animation-name:fadeIn;animation-name:fadeIn;-webkit-animation-play-state:paused;animation-play-state:paused}.am-fade.ng-enter.ng-enter-active{visibility:visible;-webkit-animation-play-state:running;animation-play-state:running}.am-fade.ng-leave{-webkit-animation-name:fadeOut;animation-name:fadeOut;-webkit-animation-play-state:paused;animation-play-state:paused}.am-fade.ng-leave.ng-leave-active{-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadeOut{from{opacity:1}to{opacity:0}}@keyframes fadeOut{from{opacity:1}to{opacity:0}}.tab-pane.am-fade.active-remove{display:none!important}.tab-pane.am-fade.active-add{-webkit-animation-name:fadeIn;animation-name:fadeIn}.modal-backdrop.am-fade,.aside-backdrop.am-fade{background:rgba(0,0,0,.5);-webkit-animation-duration:.15s;animation-duration:.15s}.modal-backdrop.am-fade.ng-leave,.aside-backdrop.am-fade.ng-leave{-webkit-animation-delay:.3s;animation-delay:.3s}.am-flip-x{-webkit-animation-duration:.4s;animation-duration:.4s;-webkit-animation-timing-function:ease;animation-timing-function:ease;-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards}.am-flip-x.am-flip-x-add,.am-flip-x.ng-hide-remove,.am-flip-x.ng-move{-webkit-animation-name:flipInXBounce;animation-name:flipInXBounce}.am-flip-x.am-flip-x-remove,.am-flip-x.ng-hide{-webkit-animation-name:flipOutX;animation-name:flipOutX}.am-flip-x.ng-enter{visibility:hidden;-webkit-animation-name:flipInXBounce;animation-name:flipInXBounce;-webkit-animation-play-state:paused;animation-play-state:paused}.am-flip-x.ng-enter.ng-enter-active{visibility:visible;-webkit-animation-play-state:running;animation-play-state:running}.am-flip-x.ng-leave{-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-animation-play-state:paused;animation-play-state:paused}.am-flip-x.ng-leave.ng-leave-active{-webkit-animation-play-state:running;animation-play-state:running}.am-flip-x-linear{-webkit-animation-duration:.4s;animation-duration:.4s;-webkit-animation-timing-function:ease;animation-timing-function:ease;-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards}.am-flip-x-linear.am-flip-x-add,.am-flip-x-linear.ng-hide-remove,.am-flip-x-linear.ng-move{-webkit-animation-name:flipInX;animation-name:flipInX}.am-flip-x-linear.am-flip-x-remove,.am-flip-x-linear.ng-hide{-webkit-animation-name:flipOutX;animation-name:flipOutX}.am-flip-x-linear.ng-enter{visibility:hidden;-webkit-animation-name:flipInX;animation-name:flipInX;-webkit-animation-play-state:paused;animation-play-state:paused}.am-flip-x-linear.ng-enter.ng-enter-active{visibility:visible;-webkit-animation-play-state:running;animation-play-state:running}.am-flip-x-linear.ng-leave{-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-animation-play-state:paused;animation-play-state:paused}.am-flip-x-linear.ng-leave.ng-leave-active{-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes flipInX{from{opacity:0;-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg)}to{opacity:1;-webkit-transform:perspective(400px) rotateX(0deg);transform:perspective(400px) rotateX(0deg)}}@keyframes flipInX{from{opacity:0;-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg)}to{opacity:1;-webkit-transform:perspective(400px) rotateX(0deg);transform:perspective(400px) rotateX(0deg)}}@-webkit-keyframes flipInXBounce{from{opacity:0;-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg)}40%{-webkit-transform:perspective(400px) rotateX(-10deg);transform:perspective(400px) rotateX(-10deg)}70%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg)}to{opacity:1;-webkit-transform:perspective(400px) rotateX(0deg);transform:perspective(400px) rotateX(0deg)}}@keyframes flipInXBounce{from{opacity:0;-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg)}40%{-webkit-transform:perspective(400px) rotateX(-10deg);transform:perspective(400px) rotateX(-10deg)}70%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg)}to{opacity:1;-webkit-transform:perspective(400px) rotateX(0deg);transform:perspective(400px) rotateX(0deg)}}@-webkit-keyframes flipOutX{from{opacity:1;-webkit-transform:perspective(400px) rotateX(0deg);transform:perspective(400px) rotateX(0deg)}to{opacity:0;-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg)}}@keyframes flipOutX{from{opacity:1;-webkit-transform:perspective(400px) rotateX(0deg);transform:perspective(400px) rotateX(0deg)}to{opacity:0;-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg)}}.am-slide-top{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards}.am-slide-top.am-slide-top-add,.am-slide-top.ng-hide-remove,.am-slide-top.ng-move{-webkit-animation-name:slideFromTop;animation-name:slideFromTop}.am-slide-top.am-slide-top-remove,.am-slide-top.ng-hide{-webkit-animation-name:slideToTop;animation-name:slideToTop}.am-slide-top.ng-enter{visibility:hidden;-webkit-animation-name:slideFromTop;animation-name:slideFromTop;-webkit-animation-play-state:paused;animation-play-state:paused}.am-slide-top.ng-enter.ng-enter-active{visibility:visible;-webkit-animation-play-state:running;animation-play-state:running}.am-slide-top.ng-leave{-webkit-animation-name:slideToTop;animation-name:slideToTop;-webkit-animation-play-state:paused;animation-play-state:paused}.am-slide-top.ng-leave.ng-leave-active{-webkit-animation-play-state:running;animation-play-state:running}.am-slide-right{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards}.am-slide-right.am-slide-right-add,.am-slide-right.ng-hide-remove,.am-slide-right.ng-move{-webkit-animation-name:slideFromRight;animation-name:slideFromRight}.am-slide-right.am-slide-right-remove,.am-slide-right.ng-hide{-webkit-animation-name:slideToRight;animation-name:slideToRight}.am-slide-right.ng-enter{visibility:hidden;-webkit-animation-name:slideFromRight;animation-name:slideFromRight;-webkit-animation-play-state:paused;animation-play-state:paused}.am-slide-right.ng-enter.ng-enter-active{visibility:visible;-webkit-animation-play-state:running;animation-play-state:running}.am-slide-right.ng-leave{-webkit-animation-name:slideToRight;animation-name:slideToRight;-webkit-animation-play-state:paused;animation-play-state:paused}.am-slide-right.ng-leave.ng-leave-active{-webkit-animation-play-state:running;animation-play-state:running}.am-slide-bottom{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards}.am-slide-bottom.am-slide-bottom-add,.am-slide-bottom.ng-hide-remove,.am-slide-bottom.ng-move{-webkit-animation-name:slideFromBottom;animation-name:slideFromBottom}.am-slide-bottom.am-slide-bottom-remove,.am-slide-bottom.ng-hide{-webkit-animation-name:slideToBottom;animation-name:slideToBottom}.am-slide-bottom.ng-enter{visibility:hidden;-webkit-animation-name:slideFromBottom;animation-name:slideFromBottom;-webkit-animation-play-state:paused;animation-play-state:paused}.am-slide-bottom.ng-enter.ng-enter-active{visibility:visible;-webkit-animation-play-state:running;animation-play-state:running}.am-slide-bottom.ng-leave{-webkit-animation-name:slideToBottom;animation-name:slideToBottom;-webkit-animation-play-state:paused;animation-play-state:paused}.am-slide-bottom.ng-leave.ng-leave-active{-webkit-animation-play-state:running;animation-play-state:running}.am-slide-left{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards}.am-slide-left.am-slide-left-add,.am-slide-left.ng-hide-remove,.am-slide-left.ng-move{-webkit-animation-name:slideFromLeft;animation-name:slideFromLeft}.am-slide-left.am-slide-left-remove,.am-slide-left.ng-hide{-webkit-animation-name:slideToLeft;animation-name:slideToLeft}.am-slide-left.ng-enter{visibility:hidden;-webkit-animation-name:slideFromLeft;animation-name:slideFromLeft;-webkit-animation-play-state:paused;animation-play-state:paused}.am-slide-left.ng-enter.ng-enter-active{visibility:visible;-webkit-animation-play-state:running;animation-play-state:running}.am-slide-left.ng-leave{-webkit-animation-name:slideToLeft;animation-name:slideToLeft;-webkit-animation-play-state:paused;animation-play-state:paused}.am-slide-left.ng-leave.ng-leave-active{-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes slideFromTop{from{-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@keyframes slideFromTop{from{-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@-webkit-keyframes slideToTop{to{-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@keyframes slideToTop{to{-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@-webkit-keyframes slideFromRight{from{-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes slideFromRight{from{-webkit-transform:translateX(100%);transform:translateX(100%)}}@-webkit-keyframes slideToRight{to{-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes slideToRight{to{-webkit-transform:translateX(100%);transform:translateX(100%)}}@-webkit-keyframes slideFromBottom{from{-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes slideFromBottom{from{-webkit-transform:translateY(100%);transform:translateY(100%)}}@-webkit-keyframes slideToBottom{to{-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes slideToBottom{to{-webkit-transform:translateY(100%);transform:translateY(100%)}}@-webkit-keyframes slideFromLeft{from{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@keyframes slideFromLeft{from{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@-webkit-keyframes slideToLeft{to{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@keyframes slideToLeft{to{-webkit-transform:translateX(-100%);transform:translateX(-100%)}} \ No newline at end of file diff --git a/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/collapse.css b/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/collapse.css deleted file mode 100644 index 4010a69..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/collapse.css +++ /dev/null @@ -1,90 +0,0 @@ -/** - * angular-motion - * @version v0.3.4 - 2014-10-14 - * @link https://github.com/mgcrea/angular-motion - * @author Olivier Louvignes - * @license MIT License, http://www.opensource.org/licenses/MIT - */ -.am-collapse { - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: ease; - animation-timing-function: ease; - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; - opacity: 1; -} -.am-collapse.am-collapse-add, -.am-collapse.ng-hide-remove, -.am-collapse.ng-move { - -webkit-animation-name: expand; - animation-name: expand; -} -.am-collapse.am-collapse-remove, -.am-collapse.ng-hide { - -webkit-animation-name: collapse; - animation-name: collapse; -} -.am-collapse.ng-enter { - visibility: hidden; - -webkit-animation-name: expand; - animation-name: expand; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-collapse.ng-enter.ng-enter-active { - visibility: visible; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-collapse.ng-leave { - -webkit-animation-name: collapse; - animation-name: collapse; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-collapse.ng-leave.ng-leave-active { - -webkit-animation-play-state: running; - animation-play-state: running; -} -@-webkit-keyframes expand { - from { - max-height: 0px; - } - to { - max-height: 500px; - } -} -@keyframes expand { - from { - max-height: 0px; - } - to { - max-height: 500px; - } -} -@-webkit-keyframes collapse { - from { - max-height: 500px; - } - to { - max-height: 0px; - } -} -@keyframes collapse { - from { - max-height: 500px; - } - to { - max-height: 0px; - } -} -.panel-collapse.am-collapse.in-remove { - -webkit-animation-name: collapse; - animation-name: collapse; - display: block; -} -.panel-collapse.am-collapse.in-add { - -webkit-animation-name: expand; - animation-name: expand; -} diff --git a/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/collapse.min.css b/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/collapse.min.css deleted file mode 100644 index c106e2e..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/collapse.min.css +++ /dev/null @@ -1,8 +0,0 @@ -/** - * angular-motion - * @version v0.3.4 - 2014-10-14 - * @link https://github.com/mgcrea/angular-motion - * @author Olivier Louvignes - * @license MIT License, http://www.opensource.org/licenses/MIT - */ -.am-collapse{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease;animation-timing-function:ease;-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards;opacity:1}.am-collapse.am-collapse-add,.am-collapse.ng-hide-remove,.am-collapse.ng-move{-webkit-animation-name:expand;animation-name:expand}.am-collapse.am-collapse-remove,.am-collapse.ng-hide{-webkit-animation-name:collapse;animation-name:collapse}.am-collapse.ng-enter{visibility:hidden;-webkit-animation-name:expand;animation-name:expand;-webkit-animation-play-state:paused;animation-play-state:paused}.am-collapse.ng-enter.ng-enter-active{visibility:visible;-webkit-animation-play-state:running;animation-play-state:running}.am-collapse.ng-leave{-webkit-animation-name:collapse;animation-name:collapse;-webkit-animation-play-state:paused;animation-play-state:paused}.am-collapse.ng-leave.ng-leave-active{-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes expand{from{max-height:0}to{max-height:500px}}@keyframes expand{from{max-height:0}to{max-height:500px}}@-webkit-keyframes collapse{from{max-height:500px}to{max-height:0}}@keyframes collapse{from{max-height:500px}to{max-height:0}}.panel-collapse.am-collapse.in-remove{-webkit-animation-name:collapse;animation-name:collapse;display:block}.panel-collapse.am-collapse.in-add{-webkit-animation-name:expand;animation-name:expand} \ No newline at end of file diff --git a/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/fade-and-scale.css b/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/fade-and-scale.css deleted file mode 100644 index b1f77ce..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/fade-and-scale.css +++ /dev/null @@ -1,90 +0,0 @@ -/** - * angular-motion - * @version v0.3.4 - 2014-10-14 - * @link https://github.com/mgcrea/angular-motion - * @author Olivier Louvignes - * @license MIT License, http://www.opensource.org/licenses/MIT - */ -.am-fade-and-scale { - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; -} -.am-fade-and-scale.ng-enter, -.am-fade-and-scale.am-fade-and-scale-add, -.am-fade-and-scale.ng-hide-remove, -.am-fade-and-scale.ng-move { - -webkit-animation-name: fadeAndScaleIn; - animation-name: fadeAndScaleIn; -} -.am-fade-and-scale.ng-leave, -.am-fade-and-scale.am-fade-and-scale-remove, -.am-fade-and-scale.ng-hide { - -webkit-animation-name: fadeAndScaleOut; - animation-name: fadeAndScaleOut; -} -.am-fade-and-scale.ng-enter { - visibility: hidden; - -webkit-animation-name: fadeAndScaleIn; - animation-name: fadeAndScaleIn; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-fade-and-scale.ng-enter.ng-enter-active { - visibility: visible; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-fade-and-scale.ng-leave { - -webkit-animation-name: fadeAndScaleOut; - animation-name: fadeAndScaleOut; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-fade-and-scale.ng-leave.ng-leave-active { - -webkit-animation-play-state: running; - animation-play-state: running; -} -@-webkit-keyframes fadeAndScaleIn { - from { - opacity: 0; - -webkit-transform: scale(0.7); - transform: scale(0.7); - } - to { - opacity: 1; - } -} -@keyframes fadeAndScaleIn { - from { - opacity: 0; - -webkit-transform: scale(0.7); - transform: scale(0.7); - } - to { - opacity: 1; - } -} -@-webkit-keyframes fadeAndScaleOut { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: scale(0.7); - transform: scale(0.7); - } -} -@keyframes fadeAndScaleOut { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: scale(0.7); - transform: scale(0.7); - } -} diff --git a/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/fade-and-scale.min.css b/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/fade-and-scale.min.css deleted file mode 100644 index a7623a9..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/fade-and-scale.min.css +++ /dev/null @@ -1,8 +0,0 @@ -/** - * angular-motion - * @version v0.3.4 - 2014-10-14 - * @link https://github.com/mgcrea/angular-motion - * @author Olivier Louvignes - * @license MIT License, http://www.opensource.org/licenses/MIT - */ -.am-fade-and-scale{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards}.am-fade-and-scale.ng-enter,.am-fade-and-scale.am-fade-and-scale-add,.am-fade-and-scale.ng-hide-remove,.am-fade-and-scale.ng-move{-webkit-animation-name:fadeAndScaleIn;animation-name:fadeAndScaleIn}.am-fade-and-scale.ng-leave,.am-fade-and-scale.am-fade-and-scale-remove,.am-fade-and-scale.ng-hide{-webkit-animation-name:fadeAndScaleOut;animation-name:fadeAndScaleOut}.am-fade-and-scale.ng-enter{visibility:hidden;-webkit-animation-name:fadeAndScaleIn;animation-name:fadeAndScaleIn;-webkit-animation-play-state:paused;animation-play-state:paused}.am-fade-and-scale.ng-enter.ng-enter-active{visibility:visible;-webkit-animation-play-state:running;animation-play-state:running}.am-fade-and-scale.ng-leave{-webkit-animation-name:fadeAndScaleOut;animation-name:fadeAndScaleOut;-webkit-animation-play-state:paused;animation-play-state:paused}.am-fade-and-scale.ng-leave.ng-leave-active{-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes fadeAndScaleIn{from{opacity:0;-webkit-transform:scale(0.7);transform:scale(0.7)}to{opacity:1}}@keyframes fadeAndScaleIn{from{opacity:0;-webkit-transform:scale(0.7);transform:scale(0.7)}to{opacity:1}}@-webkit-keyframes fadeAndScaleOut{from{opacity:1}to{opacity:0;-webkit-transform:scale(0.7);transform:scale(0.7)}}@keyframes fadeAndScaleOut{from{opacity:1}to{opacity:0;-webkit-transform:scale(0.7);transform:scale(0.7)}} \ No newline at end of file diff --git a/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/fade-and-slide.css b/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/fade-and-slide.css deleted file mode 100644 index 321c62b..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/fade-and-slide.css +++ /dev/null @@ -1,333 +0,0 @@ -/** - * angular-motion - * @version v0.3.4 - 2014-10-14 - * @link https://github.com/mgcrea/angular-motion - * @author Olivier Louvignes - * @license MIT License, http://www.opensource.org/licenses/MIT - */ -.am-fade-and-slide-top { - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; -} -.am-fade-and-slide-top.am-fade-and-slide-top-add, -.am-fade-and-slide-top.ng-hide-remove, -.am-fade-and-slide-top.ng-move { - -webkit-animation-name: fadeAndSlideFromTop; - animation-name: fadeAndSlideFromTop; -} -.am-fade-and-slide-top.am-fade-and-slide-top-remove, -.am-fade-and-slide-top.ng-hide { - -webkit-animation-name: fadeAndSlideToTop; - animation-name: fadeAndSlideToTop; -} -.am-fade-and-slide-top.ng-enter { - visibility: hidden; - -webkit-animation-name: fadeAndSlideFromTop; - animation-name: fadeAndSlideFromTop; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-fade-and-slide-top.ng-enter.ng-enter-active { - visibility: visible; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-fade-and-slide-top.ng-leave { - -webkit-animation-name: fadeAndSlideToTop; - animation-name: fadeAndSlideToTop; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-fade-and-slide-top.ng-leave.ng-leave-active { - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-fade-and-slide-right { - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; -} -.am-fade-and-slide-right.am-fade-and-slide-right-add, -.am-fade-and-slide-right.ng-hide-remove, -.am-fade-and-slide-right.ng-move { - -webkit-animation-name: fadeAndSlideFromRight; - animation-name: fadeAndSlideFromRight; -} -.am-fade-and-slide-right.am-fade-and-slide-right-remove, -.am-fade-and-slide-right.ng-hide { - -webkit-animation-name: fadeAndSlideToRight; - animation-name: fadeAndSlideToRight; -} -.am-fade-and-slide-right.ng-enter { - visibility: hidden; - -webkit-animation-name: fadeAndSlideFromRight; - animation-name: fadeAndSlideFromRight; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-fade-and-slide-right.ng-enter.ng-enter-active { - visibility: visible; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-fade-and-slide-right.ng-leave { - -webkit-animation-name: fadeAndSlideToRight; - animation-name: fadeAndSlideToRight; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-fade-and-slide-right.ng-leave.ng-leave-active { - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-fade-and-slide-bottom { - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; -} -.am-fade-and-slide-bottom.am-fade-and-slide-bottom-add, -.am-fade-and-slide-bottom.ng-hide-remove, -.am-fade-and-slide-bottom.ng-move { - -webkit-animation-name: fadeAndSlideFromBottom; - animation-name: fadeAndSlideFromBottom; -} -.am-fade-and-slide-bottom.am-fade-and-slide-bottom-remove, -.am-fade-and-slide-bottom.ng-hide { - -webkit-animation-name: fadeAndSlideToBottom; - animation-name: fadeAndSlideToBottom; -} -.am-fade-and-slide-bottom.ng-enter { - visibility: hidden; - -webkit-animation-name: fadeAndSlideFromBottom; - animation-name: fadeAndSlideFromBottom; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-fade-and-slide-bottom.ng-enter.ng-enter-active { - visibility: visible; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-fade-and-slide-bottom.ng-leave { - -webkit-animation-name: fadeAndSlideToBottom; - animation-name: fadeAndSlideToBottom; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-fade-and-slide-bottom.ng-leave.ng-leave-active { - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-fade-and-slide-left { - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; -} -.am-fade-and-slide-left.am-fade-and-slide-left-add, -.am-fade-and-slide-left.ng-hide-remove, -.am-fade-and-slide-left.ng-move { - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; - -webkit-animation-name: fadeAndSlideFromLeft; - animation-name: fadeAndSlideFromLeft; -} -.am-fade-and-slide-left.am-fade-and-slide-left-remove, -.am-fade-and-slide-left.ng-hide { - -webkit-animation-name: fadeAndSlideToLeft; - animation-name: fadeAndSlideToLeft; -} -.am-fade-and-slide-left.ng-enter { - visibility: hidden; - -webkit-animation-name: fadeAndSlideFromLeft; - animation-name: fadeAndSlideFromLeft; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-fade-and-slide-left.ng-enter.ng-enter-active { - visibility: visible; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-fade-and-slide-left.ng-leave { - -webkit-animation-name: fadeAndSlideToLeft; - animation-name: fadeAndSlideToLeft; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-fade-and-slide-left.ng-leave.ng-leave-active { - -webkit-animation-play-state: running; - animation-play-state: running; -} -@-webkit-keyframes fadeAndSlideFromTop { - from { - opacity: 0; - -webkit-transform: translateY(-20%); - transform: translateY(-20%); - } - to { - opacity: 1; - } -} -@keyframes fadeAndSlideFromTop { - from { - opacity: 0; - -webkit-transform: translateY(-20%); - transform: translateY(-20%); - } - to { - opacity: 1; - } -} -@-webkit-keyframes fadeAndSlideToTop { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translateY(-20%); - transform: translateY(-20%); - } -} -@keyframes fadeAndSlideToTop { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translateY(-20%); - transform: translateY(-20%); - } -} -@-webkit-keyframes fadeAndSlideFromRight { - from { - opacity: 0; - -webkit-transform: translateX(20%); - transform: translateX(20%); - } - to { - opacity: 1; - } -} -@keyframes fadeAndSlideFromRight { - from { - opacity: 0; - -webkit-transform: translateX(20%); - transform: translateX(20%); - } - to { - opacity: 1; - } -} -@-webkit-keyframes fadeAndSlideToRight { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translateX(20%); - transform: translateX(20%); - } -} -@keyframes fadeAndSlideToRight { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translateX(20%); - transform: translateX(20%); - } -} -@-webkit-keyframes fadeAndSlideFromBottom { - from { - opacity: 0; - -webkit-transform: translateY(20%); - transform: translateY(20%); - } - to { - opacity: 1; - } -} -@keyframes fadeAndSlideFromBottom { - from { - opacity: 0; - -webkit-transform: translateY(20%); - transform: translateY(20%); - } - to { - opacity: 1; - } -} -@-webkit-keyframes fadeAndSlideToBottom { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translateY(20%); - transform: translateY(20%); - } -} -@keyframes fadeAndSlideToBottom { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translateY(20%); - transform: translateY(20%); - } -} -@-webkit-keyframes fadeAndSlideFromLeft { - from { - opacity: 0; - -webkit-transform: translateX(-20%); - transform: translateX(-20%); - } - to { - opacity: 1; - } -} -@keyframes fadeAndSlideFromLeft { - from { - opacity: 0; - -webkit-transform: translateX(-20%); - transform: translateX(-20%); - } - to { - opacity: 1; - } -} -@-webkit-keyframes fadeAndSlideToLeft { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translateX(-20%); - transform: translateX(-20%); - } -} -@keyframes fadeAndSlideToLeft { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translateX(-20%); - transform: translateX(-20%); - } -} diff --git a/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/fade-and-slide.min.css b/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/fade-and-slide.min.css deleted file mode 100644 index 824d22e..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/fade-and-slide.min.css +++ /dev/null @@ -1,8 +0,0 @@ -/** - * angular-motion - * @version v0.3.4 - 2014-10-14 - * @link https://github.com/mgcrea/angular-motion - * @author Olivier Louvignes - * @license MIT License, http://www.opensource.org/licenses/MIT - */ -.am-fade-and-slide-top{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards}.am-fade-and-slide-top.am-fade-and-slide-top-add,.am-fade-and-slide-top.ng-hide-remove,.am-fade-and-slide-top.ng-move{-webkit-animation-name:fadeAndSlideFromTop;animation-name:fadeAndSlideFromTop}.am-fade-and-slide-top.am-fade-and-slide-top-remove,.am-fade-and-slide-top.ng-hide{-webkit-animation-name:fadeAndSlideToTop;animation-name:fadeAndSlideToTop}.am-fade-and-slide-top.ng-enter{visibility:hidden;-webkit-animation-name:fadeAndSlideFromTop;animation-name:fadeAndSlideFromTop;-webkit-animation-play-state:paused;animation-play-state:paused}.am-fade-and-slide-top.ng-enter.ng-enter-active{visibility:visible;-webkit-animation-play-state:running;animation-play-state:running}.am-fade-and-slide-top.ng-leave{-webkit-animation-name:fadeAndSlideToTop;animation-name:fadeAndSlideToTop;-webkit-animation-play-state:paused;animation-play-state:paused}.am-fade-and-slide-top.ng-leave.ng-leave-active{-webkit-animation-play-state:running;animation-play-state:running}.am-fade-and-slide-right{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards}.am-fade-and-slide-right.am-fade-and-slide-right-add,.am-fade-and-slide-right.ng-hide-remove,.am-fade-and-slide-right.ng-move{-webkit-animation-name:fadeAndSlideFromRight;animation-name:fadeAndSlideFromRight}.am-fade-and-slide-right.am-fade-and-slide-right-remove,.am-fade-and-slide-right.ng-hide{-webkit-animation-name:fadeAndSlideToRight;animation-name:fadeAndSlideToRight}.am-fade-and-slide-right.ng-enter{visibility:hidden;-webkit-animation-name:fadeAndSlideFromRight;animation-name:fadeAndSlideFromRight;-webkit-animation-play-state:paused;animation-play-state:paused}.am-fade-and-slide-right.ng-enter.ng-enter-active{visibility:visible;-webkit-animation-play-state:running;animation-play-state:running}.am-fade-and-slide-right.ng-leave{-webkit-animation-name:fadeAndSlideToRight;animation-name:fadeAndSlideToRight;-webkit-animation-play-state:paused;animation-play-state:paused}.am-fade-and-slide-right.ng-leave.ng-leave-active{-webkit-animation-play-state:running;animation-play-state:running}.am-fade-and-slide-bottom{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards}.am-fade-and-slide-bottom.am-fade-and-slide-bottom-add,.am-fade-and-slide-bottom.ng-hide-remove,.am-fade-and-slide-bottom.ng-move{-webkit-animation-name:fadeAndSlideFromBottom;animation-name:fadeAndSlideFromBottom}.am-fade-and-slide-bottom.am-fade-and-slide-bottom-remove,.am-fade-and-slide-bottom.ng-hide{-webkit-animation-name:fadeAndSlideToBottom;animation-name:fadeAndSlideToBottom}.am-fade-and-slide-bottom.ng-enter{visibility:hidden;-webkit-animation-name:fadeAndSlideFromBottom;animation-name:fadeAndSlideFromBottom;-webkit-animation-play-state:paused;animation-play-state:paused}.am-fade-and-slide-bottom.ng-enter.ng-enter-active{visibility:visible;-webkit-animation-play-state:running;animation-play-state:running}.am-fade-and-slide-bottom.ng-leave{-webkit-animation-name:fadeAndSlideToBottom;animation-name:fadeAndSlideToBottom;-webkit-animation-play-state:paused;animation-play-state:paused}.am-fade-and-slide-bottom.ng-leave.ng-leave-active{-webkit-animation-play-state:running;animation-play-state:running}.am-fade-and-slide-left{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards}.am-fade-and-slide-left.am-fade-and-slide-left-add,.am-fade-and-slide-left.ng-hide-remove,.am-fade-and-slide-left.ng-move{-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards;-webkit-animation-name:fadeAndSlideFromLeft;animation-name:fadeAndSlideFromLeft}.am-fade-and-slide-left.am-fade-and-slide-left-remove,.am-fade-and-slide-left.ng-hide{-webkit-animation-name:fadeAndSlideToLeft;animation-name:fadeAndSlideToLeft}.am-fade-and-slide-left.ng-enter{visibility:hidden;-webkit-animation-name:fadeAndSlideFromLeft;animation-name:fadeAndSlideFromLeft;-webkit-animation-play-state:paused;animation-play-state:paused}.am-fade-and-slide-left.ng-enter.ng-enter-active{visibility:visible;-webkit-animation-play-state:running;animation-play-state:running}.am-fade-and-slide-left.ng-leave{-webkit-animation-name:fadeAndSlideToLeft;animation-name:fadeAndSlideToLeft;-webkit-animation-play-state:paused;animation-play-state:paused}.am-fade-and-slide-left.ng-leave.ng-leave-active{-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes fadeAndSlideFromTop{from{opacity:0;-webkit-transform:translateY(-20%);transform:translateY(-20%)}to{opacity:1}}@keyframes fadeAndSlideFromTop{from{opacity:0;-webkit-transform:translateY(-20%);transform:translateY(-20%)}to{opacity:1}}@-webkit-keyframes fadeAndSlideToTop{from{opacity:1}to{opacity:0;-webkit-transform:translateY(-20%);transform:translateY(-20%)}}@keyframes fadeAndSlideToTop{from{opacity:1}to{opacity:0;-webkit-transform:translateY(-20%);transform:translateY(-20%)}}@-webkit-keyframes fadeAndSlideFromRight{from{opacity:0;-webkit-transform:translateX(20%);transform:translateX(20%)}to{opacity:1}}@keyframes fadeAndSlideFromRight{from{opacity:0;-webkit-transform:translateX(20%);transform:translateX(20%)}to{opacity:1}}@-webkit-keyframes fadeAndSlideToRight{from{opacity:1}to{opacity:0;-webkit-transform:translateX(20%);transform:translateX(20%)}}@keyframes fadeAndSlideToRight{from{opacity:1}to{opacity:0;-webkit-transform:translateX(20%);transform:translateX(20%)}}@-webkit-keyframes fadeAndSlideFromBottom{from{opacity:0;-webkit-transform:translateY(20%);transform:translateY(20%)}to{opacity:1}}@keyframes fadeAndSlideFromBottom{from{opacity:0;-webkit-transform:translateY(20%);transform:translateY(20%)}to{opacity:1}}@-webkit-keyframes fadeAndSlideToBottom{from{opacity:1}to{opacity:0;-webkit-transform:translateY(20%);transform:translateY(20%)}}@keyframes fadeAndSlideToBottom{from{opacity:1}to{opacity:0;-webkit-transform:translateY(20%);transform:translateY(20%)}}@-webkit-keyframes fadeAndSlideFromLeft{from{opacity:0;-webkit-transform:translateX(-20%);transform:translateX(-20%)}to{opacity:1}}@keyframes fadeAndSlideFromLeft{from{opacity:0;-webkit-transform:translateX(-20%);transform:translateX(-20%)}to{opacity:1}}@-webkit-keyframes fadeAndSlideToLeft{from{opacity:1}to{opacity:0;-webkit-transform:translateX(-20%);transform:translateX(-20%)}}@keyframes fadeAndSlideToLeft{from{opacity:1}to{opacity:0;-webkit-transform:translateX(-20%);transform:translateX(-20%)}} \ No newline at end of file diff --git a/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/fade.css b/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/fade.css deleted file mode 100644 index 777ca3f..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/fade.css +++ /dev/null @@ -1,99 +0,0 @@ -/** - * angular-motion - * @version v0.3.4 - 2014-10-14 - * @link https://github.com/mgcrea/angular-motion - * @author Olivier Louvignes - * @license MIT License, http://www.opensource.org/licenses/MIT - */ -.am-fade { - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: linear; - animation-timing-function: linear; - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; - opacity: 1; -} -.am-fade.am-fade-add, -.am-fade.ng-hide-remove, -.am-fade.ng-move { - -webkit-animation-name: fadeIn; - animation-name: fadeIn; -} -.am-fade.am-fade-remove, -.am-fade.ng-hide { - -webkit-animation-name: fadeOut; - animation-name: fadeOut; -} -.am-fade.ng-enter { - visibility: hidden; - -webkit-animation-name: fadeIn; - animation-name: fadeIn; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-fade.ng-enter.ng-enter-active { - visibility: visible; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-fade.ng-leave { - -webkit-animation-name: fadeOut; - animation-name: fadeOut; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-fade.ng-leave.ng-leave-active { - -webkit-animation-play-state: running; - animation-play-state: running; -} -@-webkit-keyframes fadeIn { - from { - opacity: 0; - } - to { - opacity: 1; - } -} -@keyframes fadeIn { - from { - opacity: 0; - } - to { - opacity: 1; - } -} -@-webkit-keyframes fadeOut { - from { - opacity: 1; - } - to { - opacity: 0; - } -} -@keyframes fadeOut { - from { - opacity: 1; - } - to { - opacity: 0; - } -} -.tab-pane.am-fade.active-remove { - display: none !important; -} -.tab-pane.am-fade.active-add { - -webkit-animation-name: fadeIn; - animation-name: fadeIn; -} -.modal-backdrop.am-fade, -.aside-backdrop.am-fade { - background: rgba(0, 0, 0, 0.5); - -webkit-animation-duration: 0.15s; - animation-duration: 0.15s; -} -.modal-backdrop.am-fade.ng-leave, -.aside-backdrop.am-fade.ng-leave { - -webkit-animation-delay: 0.3s; - animation-delay: 0.3s; -} diff --git a/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/fade.min.css b/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/fade.min.css deleted file mode 100644 index 54a029a..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/fade.min.css +++ /dev/null @@ -1,8 +0,0 @@ -/** - * angular-motion - * @version v0.3.4 - 2014-10-14 - * @link https://github.com/mgcrea/angular-motion - * @author Olivier Louvignes - * @license MIT License, http://www.opensource.org/licenses/MIT - */ -.am-fade{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards;opacity:1}.am-fade.am-fade-add,.am-fade.ng-hide-remove,.am-fade.ng-move{-webkit-animation-name:fadeIn;animation-name:fadeIn}.am-fade.am-fade-remove,.am-fade.ng-hide{-webkit-animation-name:fadeOut;animation-name:fadeOut}.am-fade.ng-enter{visibility:hidden;-webkit-animation-name:fadeIn;animation-name:fadeIn;-webkit-animation-play-state:paused;animation-play-state:paused}.am-fade.ng-enter.ng-enter-active{visibility:visible;-webkit-animation-play-state:running;animation-play-state:running}.am-fade.ng-leave{-webkit-animation-name:fadeOut;animation-name:fadeOut;-webkit-animation-play-state:paused;animation-play-state:paused}.am-fade.ng-leave.ng-leave-active{-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadeOut{from{opacity:1}to{opacity:0}}@keyframes fadeOut{from{opacity:1}to{opacity:0}}.tab-pane.am-fade.active-remove{display:none!important}.tab-pane.am-fade.active-add{-webkit-animation-name:fadeIn;animation-name:fadeIn}.modal-backdrop.am-fade,.aside-backdrop.am-fade{background:rgba(0,0,0,.5);-webkit-animation-duration:.15s;animation-duration:.15s}.modal-backdrop.am-fade.ng-leave,.aside-backdrop.am-fade.ng-leave{-webkit-animation-delay:.3s;animation-delay:.3s} \ No newline at end of file diff --git a/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/flip.css b/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/flip.css deleted file mode 100644 index 90e6ca8..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/flip.css +++ /dev/null @@ -1,177 +0,0 @@ -/** - * angular-motion - * @version v0.3.4 - 2014-10-14 - * @link https://github.com/mgcrea/angular-motion - * @author Olivier Louvignes - * @license MIT License, http://www.opensource.org/licenses/MIT - */ -.am-flip-x { - -webkit-animation-duration: 0.4s; - animation-duration: 0.4s; - -webkit-animation-timing-function: ease; - animation-timing-function: ease; - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; -} -.am-flip-x.am-flip-x-add, -.am-flip-x.ng-hide-remove, -.am-flip-x.ng-move { - -webkit-animation-name: flipInXBounce; - animation-name: flipInXBounce; -} -.am-flip-x.am-flip-x-remove, -.am-flip-x.ng-hide { - -webkit-animation-name: flipOutX; - animation-name: flipOutX; -} -.am-flip-x.ng-enter { - visibility: hidden; - -webkit-animation-name: flipInXBounce; - animation-name: flipInXBounce; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-flip-x.ng-enter.ng-enter-active { - visibility: visible; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-flip-x.ng-leave { - -webkit-animation-name: flipOutX; - animation-name: flipOutX; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-flip-x.ng-leave.ng-leave-active { - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-flip-x-linear { - -webkit-animation-duration: 0.4s; - animation-duration: 0.4s; - -webkit-animation-timing-function: ease; - animation-timing-function: ease; - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; -} -.am-flip-x-linear.am-flip-x-add, -.am-flip-x-linear.ng-hide-remove, -.am-flip-x-linear.ng-move { - -webkit-animation-name: flipInX; - animation-name: flipInX; -} -.am-flip-x-linear.am-flip-x-remove, -.am-flip-x-linear.ng-hide { - -webkit-animation-name: flipOutX; - animation-name: flipOutX; -} -.am-flip-x-linear.ng-enter { - visibility: hidden; - -webkit-animation-name: flipInX; - animation-name: flipInX; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-flip-x-linear.ng-enter.ng-enter-active { - visibility: visible; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-flip-x-linear.ng-leave { - -webkit-animation-name: flipOutX; - animation-name: flipOutX; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-flip-x-linear.ng-leave.ng-leave-active { - -webkit-animation-play-state: running; - animation-play-state: running; -} -@-webkit-keyframes flipInX { - from { - opacity: 0; - -webkit-transform: perspective(400px) rotateX(90deg); - transform: perspective(400px) rotateX(90deg); - } - to { - opacity: 1; - -webkit-transform: perspective(400px) rotateX(0deg); - transform: perspective(400px) rotateX(0deg); - } -} -@keyframes flipInX { - from { - opacity: 0; - -webkit-transform: perspective(400px) rotateX(90deg); - transform: perspective(400px) rotateX(90deg); - } - to { - opacity: 1; - -webkit-transform: perspective(400px) rotateX(0deg); - transform: perspective(400px) rotateX(0deg); - } -} -@-webkit-keyframes flipInXBounce { - from { - opacity: 0; - -webkit-transform: perspective(400px) rotateX(90deg); - transform: perspective(400px) rotateX(90deg); - } - 40% { - -webkit-transform: perspective(400px) rotateX(-10deg); - transform: perspective(400px) rotateX(-10deg); - } - 70% { - -webkit-transform: perspective(400px) rotateX(10deg); - transform: perspective(400px) rotateX(10deg); - } - to { - opacity: 1; - -webkit-transform: perspective(400px) rotateX(0deg); - transform: perspective(400px) rotateX(0deg); - } -} -@keyframes flipInXBounce { - from { - opacity: 0; - -webkit-transform: perspective(400px) rotateX(90deg); - transform: perspective(400px) rotateX(90deg); - } - 40% { - -webkit-transform: perspective(400px) rotateX(-10deg); - transform: perspective(400px) rotateX(-10deg); - } - 70% { - -webkit-transform: perspective(400px) rotateX(10deg); - transform: perspective(400px) rotateX(10deg); - } - to { - opacity: 1; - -webkit-transform: perspective(400px) rotateX(0deg); - transform: perspective(400px) rotateX(0deg); - } -} -@-webkit-keyframes flipOutX { - from { - opacity: 1; - -webkit-transform: perspective(400px) rotateX(0deg); - transform: perspective(400px) rotateX(0deg); - } - to { - opacity: 0; - -webkit-transform: perspective(400px) rotateX(90deg); - transform: perspective(400px) rotateX(90deg); - } -} -@keyframes flipOutX { - from { - opacity: 1; - -webkit-transform: perspective(400px) rotateX(0deg); - transform: perspective(400px) rotateX(0deg); - } - to { - opacity: 0; - -webkit-transform: perspective(400px) rotateX(90deg); - transform: perspective(400px) rotateX(90deg); - } -} diff --git a/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/flip.min.css b/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/flip.min.css deleted file mode 100644 index f8d43ce..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/flip.min.css +++ /dev/null @@ -1,8 +0,0 @@ -/** - * angular-motion - * @version v0.3.4 - 2014-10-14 - * @link https://github.com/mgcrea/angular-motion - * @author Olivier Louvignes - * @license MIT License, http://www.opensource.org/licenses/MIT - */ -.am-flip-x{-webkit-animation-duration:.4s;animation-duration:.4s;-webkit-animation-timing-function:ease;animation-timing-function:ease;-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards}.am-flip-x.am-flip-x-add,.am-flip-x.ng-hide-remove,.am-flip-x.ng-move{-webkit-animation-name:flipInXBounce;animation-name:flipInXBounce}.am-flip-x.am-flip-x-remove,.am-flip-x.ng-hide{-webkit-animation-name:flipOutX;animation-name:flipOutX}.am-flip-x.ng-enter{visibility:hidden;-webkit-animation-name:flipInXBounce;animation-name:flipInXBounce;-webkit-animation-play-state:paused;animation-play-state:paused}.am-flip-x.ng-enter.ng-enter-active{visibility:visible;-webkit-animation-play-state:running;animation-play-state:running}.am-flip-x.ng-leave{-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-animation-play-state:paused;animation-play-state:paused}.am-flip-x.ng-leave.ng-leave-active{-webkit-animation-play-state:running;animation-play-state:running}.am-flip-x-linear{-webkit-animation-duration:.4s;animation-duration:.4s;-webkit-animation-timing-function:ease;animation-timing-function:ease;-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards}.am-flip-x-linear.am-flip-x-add,.am-flip-x-linear.ng-hide-remove,.am-flip-x-linear.ng-move{-webkit-animation-name:flipInX;animation-name:flipInX}.am-flip-x-linear.am-flip-x-remove,.am-flip-x-linear.ng-hide{-webkit-animation-name:flipOutX;animation-name:flipOutX}.am-flip-x-linear.ng-enter{visibility:hidden;-webkit-animation-name:flipInX;animation-name:flipInX;-webkit-animation-play-state:paused;animation-play-state:paused}.am-flip-x-linear.ng-enter.ng-enter-active{visibility:visible;-webkit-animation-play-state:running;animation-play-state:running}.am-flip-x-linear.ng-leave{-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-animation-play-state:paused;animation-play-state:paused}.am-flip-x-linear.ng-leave.ng-leave-active{-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes flipInX{from{opacity:0;-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg)}to{opacity:1;-webkit-transform:perspective(400px) rotateX(0deg);transform:perspective(400px) rotateX(0deg)}}@keyframes flipInX{from{opacity:0;-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg)}to{opacity:1;-webkit-transform:perspective(400px) rotateX(0deg);transform:perspective(400px) rotateX(0deg)}}@-webkit-keyframes flipInXBounce{from{opacity:0;-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg)}40%{-webkit-transform:perspective(400px) rotateX(-10deg);transform:perspective(400px) rotateX(-10deg)}70%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg)}to{opacity:1;-webkit-transform:perspective(400px) rotateX(0deg);transform:perspective(400px) rotateX(0deg)}}@keyframes flipInXBounce{from{opacity:0;-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg)}40%{-webkit-transform:perspective(400px) rotateX(-10deg);transform:perspective(400px) rotateX(-10deg)}70%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg)}to{opacity:1;-webkit-transform:perspective(400px) rotateX(0deg);transform:perspective(400px) rotateX(0deg)}}@-webkit-keyframes flipOutX{from{opacity:1;-webkit-transform:perspective(400px) rotateX(0deg);transform:perspective(400px) rotateX(0deg)}to{opacity:0;-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg)}}@keyframes flipOutX{from{opacity:1;-webkit-transform:perspective(400px) rotateX(0deg);transform:perspective(400px) rotateX(0deg)}to{opacity:0;-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg)}} \ No newline at end of file diff --git a/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/slide.css b/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/slide.css deleted file mode 100644 index 8d52e29..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/slide.css +++ /dev/null @@ -1,267 +0,0 @@ -/** - * angular-motion - * @version v0.3.4 - 2014-10-14 - * @link https://github.com/mgcrea/angular-motion - * @author Olivier Louvignes - * @license MIT License, http://www.opensource.org/licenses/MIT - */ -.am-slide-top { - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; -} -.am-slide-top.am-slide-top-add, -.am-slide-top.ng-hide-remove, -.am-slide-top.ng-move { - -webkit-animation-name: slideFromTop; - animation-name: slideFromTop; -} -.am-slide-top.am-slide-top-remove, -.am-slide-top.ng-hide { - -webkit-animation-name: slideToTop; - animation-name: slideToTop; -} -.am-slide-top.ng-enter { - visibility: hidden; - -webkit-animation-name: slideFromTop; - animation-name: slideFromTop; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-slide-top.ng-enter.ng-enter-active { - visibility: visible; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-slide-top.ng-leave { - -webkit-animation-name: slideToTop; - animation-name: slideToTop; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-slide-top.ng-leave.ng-leave-active { - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-slide-right { - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; -} -.am-slide-right.am-slide-right-add, -.am-slide-right.ng-hide-remove, -.am-slide-right.ng-move { - -webkit-animation-name: slideFromRight; - animation-name: slideFromRight; -} -.am-slide-right.am-slide-right-remove, -.am-slide-right.ng-hide { - -webkit-animation-name: slideToRight; - animation-name: slideToRight; -} -.am-slide-right.ng-enter { - visibility: hidden; - -webkit-animation-name: slideFromRight; - animation-name: slideFromRight; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-slide-right.ng-enter.ng-enter-active { - visibility: visible; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-slide-right.ng-leave { - -webkit-animation-name: slideToRight; - animation-name: slideToRight; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-slide-right.ng-leave.ng-leave-active { - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-slide-bottom { - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; -} -.am-slide-bottom.am-slide-bottom-add, -.am-slide-bottom.ng-hide-remove, -.am-slide-bottom.ng-move { - -webkit-animation-name: slideFromBottom; - animation-name: slideFromBottom; -} -.am-slide-bottom.am-slide-bottom-remove, -.am-slide-bottom.ng-hide { - -webkit-animation-name: slideToBottom; - animation-name: slideToBottom; -} -.am-slide-bottom.ng-enter { - visibility: hidden; - -webkit-animation-name: slideFromBottom; - animation-name: slideFromBottom; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-slide-bottom.ng-enter.ng-enter-active { - visibility: visible; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-slide-bottom.ng-leave { - -webkit-animation-name: slideToBottom; - animation-name: slideToBottom; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-slide-bottom.ng-leave.ng-leave-active { - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-slide-left { - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; -} -.am-slide-left.am-slide-left-add, -.am-slide-left.ng-hide-remove, -.am-slide-left.ng-move { - -webkit-animation-name: slideFromLeft; - animation-name: slideFromLeft; -} -.am-slide-left.am-slide-left-remove, -.am-slide-left.ng-hide { - -webkit-animation-name: slideToLeft; - animation-name: slideToLeft; -} -.am-slide-left.ng-enter { - visibility: hidden; - -webkit-animation-name: slideFromLeft; - animation-name: slideFromLeft; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-slide-left.ng-enter.ng-enter-active { - visibility: visible; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.am-slide-left.ng-leave { - -webkit-animation-name: slideToLeft; - animation-name: slideToLeft; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.am-slide-left.ng-leave.ng-leave-active { - -webkit-animation-play-state: running; - animation-play-state: running; -} -@-webkit-keyframes slideFromTop { - from { - -webkit-transform: translateY(-100%); - transform: translateY(-100%); - } -} -@keyframes slideFromTop { - from { - -webkit-transform: translateY(-100%); - transform: translateY(-100%); - } -} -@-webkit-keyframes slideToTop { - to { - -webkit-transform: translateY(-100%); - transform: translateY(-100%); - } -} -@keyframes slideToTop { - to { - -webkit-transform: translateY(-100%); - transform: translateY(-100%); - } -} -@-webkit-keyframes slideFromRight { - from { - -webkit-transform: translateX(100%); - transform: translateX(100%); - } -} -@keyframes slideFromRight { - from { - -webkit-transform: translateX(100%); - transform: translateX(100%); - } -} -@-webkit-keyframes slideToRight { - to { - -webkit-transform: translateX(100%); - transform: translateX(100%); - } -} -@keyframes slideToRight { - to { - -webkit-transform: translateX(100%); - transform: translateX(100%); - } -} -@-webkit-keyframes slideFromBottom { - from { - -webkit-transform: translateY(100%); - transform: translateY(100%); - } -} -@keyframes slideFromBottom { - from { - -webkit-transform: translateY(100%); - transform: translateY(100%); - } -} -@-webkit-keyframes slideToBottom { - to { - -webkit-transform: translateY(100%); - transform: translateY(100%); - } -} -@keyframes slideToBottom { - to { - -webkit-transform: translateY(100%); - transform: translateY(100%); - } -} -@-webkit-keyframes slideFromLeft { - from { - -webkit-transform: translateX(-100%); - transform: translateX(-100%); - } -} -@keyframes slideFromLeft { - from { - -webkit-transform: translateX(-100%); - transform: translateX(-100%); - } -} -@-webkit-keyframes slideToLeft { - to { - -webkit-transform: translateX(-100%); - transform: translateX(-100%); - } -} -@keyframes slideToLeft { - to { - -webkit-transform: translateX(-100%); - transform: translateX(-100%); - } -} diff --git a/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/slide.min.css b/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/slide.min.css deleted file mode 100644 index 3ed96df..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-motion/dist/modules/slide.min.css +++ /dev/null @@ -1,8 +0,0 @@ -/** - * angular-motion - * @version v0.3.4 - 2014-10-14 - * @link https://github.com/mgcrea/angular-motion - * @author Olivier Louvignes - * @license MIT License, http://www.opensource.org/licenses/MIT - */ -.am-slide-top{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards}.am-slide-top.am-slide-top-add,.am-slide-top.ng-hide-remove,.am-slide-top.ng-move{-webkit-animation-name:slideFromTop;animation-name:slideFromTop}.am-slide-top.am-slide-top-remove,.am-slide-top.ng-hide{-webkit-animation-name:slideToTop;animation-name:slideToTop}.am-slide-top.ng-enter{visibility:hidden;-webkit-animation-name:slideFromTop;animation-name:slideFromTop;-webkit-animation-play-state:paused;animation-play-state:paused}.am-slide-top.ng-enter.ng-enter-active{visibility:visible;-webkit-animation-play-state:running;animation-play-state:running}.am-slide-top.ng-leave{-webkit-animation-name:slideToTop;animation-name:slideToTop;-webkit-animation-play-state:paused;animation-play-state:paused}.am-slide-top.ng-leave.ng-leave-active{-webkit-animation-play-state:running;animation-play-state:running}.am-slide-right{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards}.am-slide-right.am-slide-right-add,.am-slide-right.ng-hide-remove,.am-slide-right.ng-move{-webkit-animation-name:slideFromRight;animation-name:slideFromRight}.am-slide-right.am-slide-right-remove,.am-slide-right.ng-hide{-webkit-animation-name:slideToRight;animation-name:slideToRight}.am-slide-right.ng-enter{visibility:hidden;-webkit-animation-name:slideFromRight;animation-name:slideFromRight;-webkit-animation-play-state:paused;animation-play-state:paused}.am-slide-right.ng-enter.ng-enter-active{visibility:visible;-webkit-animation-play-state:running;animation-play-state:running}.am-slide-right.ng-leave{-webkit-animation-name:slideToRight;animation-name:slideToRight;-webkit-animation-play-state:paused;animation-play-state:paused}.am-slide-right.ng-leave.ng-leave-active{-webkit-animation-play-state:running;animation-play-state:running}.am-slide-bottom{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards}.am-slide-bottom.am-slide-bottom-add,.am-slide-bottom.ng-hide-remove,.am-slide-bottom.ng-move{-webkit-animation-name:slideFromBottom;animation-name:slideFromBottom}.am-slide-bottom.am-slide-bottom-remove,.am-slide-bottom.ng-hide{-webkit-animation-name:slideToBottom;animation-name:slideToBottom}.am-slide-bottom.ng-enter{visibility:hidden;-webkit-animation-name:slideFromBottom;animation-name:slideFromBottom;-webkit-animation-play-state:paused;animation-play-state:paused}.am-slide-bottom.ng-enter.ng-enter-active{visibility:visible;-webkit-animation-play-state:running;animation-play-state:running}.am-slide-bottom.ng-leave{-webkit-animation-name:slideToBottom;animation-name:slideToBottom;-webkit-animation-play-state:paused;animation-play-state:paused}.am-slide-bottom.ng-leave.ng-leave-active{-webkit-animation-play-state:running;animation-play-state:running}.am-slide-left{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards}.am-slide-left.am-slide-left-add,.am-slide-left.ng-hide-remove,.am-slide-left.ng-move{-webkit-animation-name:slideFromLeft;animation-name:slideFromLeft}.am-slide-left.am-slide-left-remove,.am-slide-left.ng-hide{-webkit-animation-name:slideToLeft;animation-name:slideToLeft}.am-slide-left.ng-enter{visibility:hidden;-webkit-animation-name:slideFromLeft;animation-name:slideFromLeft;-webkit-animation-play-state:paused;animation-play-state:paused}.am-slide-left.ng-enter.ng-enter-active{visibility:visible;-webkit-animation-play-state:running;animation-play-state:running}.am-slide-left.ng-leave{-webkit-animation-name:slideToLeft;animation-name:slideToLeft;-webkit-animation-play-state:paused;animation-play-state:paused}.am-slide-left.ng-leave.ng-leave-active{-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes slideFromTop{from{-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@keyframes slideFromTop{from{-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@-webkit-keyframes slideToTop{to{-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@keyframes slideToTop{to{-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@-webkit-keyframes slideFromRight{from{-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes slideFromRight{from{-webkit-transform:translateX(100%);transform:translateX(100%)}}@-webkit-keyframes slideToRight{to{-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes slideToRight{to{-webkit-transform:translateX(100%);transform:translateX(100%)}}@-webkit-keyframes slideFromBottom{from{-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes slideFromBottom{from{-webkit-transform:translateY(100%);transform:translateY(100%)}}@-webkit-keyframes slideToBottom{to{-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes slideToBottom{to{-webkit-transform:translateY(100%);transform:translateY(100%)}}@-webkit-keyframes slideFromLeft{from{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@keyframes slideFromLeft{from{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@-webkit-keyframes slideToLeft{to{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@keyframes slideToLeft{to{-webkit-transform:translateX(-100%);transform:translateX(-100%)}} \ No newline at end of file diff --git a/data-mgmt/src/main/webapp/bower_components/angular-motion/package.json b/data-mgmt/src/main/webapp/bower_components/angular-motion/package.json deleted file mode 100644 index e188e01..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-motion/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "name": "angular-motion", - "description": "AngularMotion - Fancy CSS3 animations for AngularJS 1.2+", - "version": "0.3.4", - "keywords": [ - "angular", - "animation" - ], - "homepage": "https://github.com/mgcrea/angular-motion", - "bugs": "https://github.com/mgcrea/angular-motion/issues", - "author": { - "name": "Olivier Louvignes", - "email": "olivier@mg-crea.com", - "url": "https://github.com/mgcrea" - }, - "repository": { - "type": "git", - "url": "https://github.com/mgcrea/angular-motion.git" - }, - "licenses": [ - { - "type": "MIT" - } - ], - "dependencies": {}, - "devDependencies": { - "grunt": "~0.4.5", - "grunt-angular-templates": "~0.5.5", - "grunt-autoprefixer": "~0.7.6", - "grunt-concurrent": "~0.5.0", - "grunt-contrib-clean": "~0.5.0", - "grunt-contrib-concat": "~0.4.0", - "grunt-contrib-connect": "~0.8.0", - "grunt-contrib-copy": "~0.5.0", - "grunt-contrib-cssmin": "~0.10.0", - "grunt-contrib-htmlmin": "~0.3.0", - "grunt-contrib-jshint": "~0.10.0", - "grunt-contrib-less": "~0.11.3", - "grunt-contrib-uglify": "~0.5.0", - "grunt-contrib-watch": "~0.6.1", - "grunt-karma": "~0.8.3", - "grunt-newer": "~0.7.0", - "grunt-nginclude": "~0.4.1", - "grunt-ngmin": "0.0.3", - "grunt-rev": "~0.1.0", - "grunt-usemin": "~2.2.0", - "jshint-stylish": "~0.2.0", - "karma-coverage": "~0.2.4", - "load-grunt-tasks": "~0.6.0" - }, - "engines": { - "node": ">=0.8.0" - }, - "scripts": { - "test": "grunt test" - } -} diff --git a/data-mgmt/src/main/webapp/bower_components/angular-motion/src/collapse/collapse.less b/data-mgmt/src/main/webapp/bower_components/angular-motion/src/collapse/collapse.less deleted file mode 100644 index 3a458ad..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-motion/src/collapse/collapse.less +++ /dev/null @@ -1,80 +0,0 @@ - -// Collapse -// - -@collapse-duration: .3s; -@collapse-timing-function: ease; - -.am-collapse { - - animation-duration: @collapse-duration; - animation-timing-function: @collapse-timing-function; - animation-fill-mode: backwards; - opacity: 1; - - &.am-collapse-add, &.ng-hide-remove, &.ng-move { - animation-name: expand; - } - &.am-collapse-remove, &.ng-hide { - animation-name: collapse; - } - - &.ng-enter { - visibility: hidden; - animation-name: expand; - animation-play-state: paused; - &.ng-enter-active { - visibility: visible; - animation-play-state: running; - } - } - &.ng-leave { - animation-name: collapse; - animation-play-state: paused; - &.ng-leave-active { - animation-play-state: running; - } - } - -} - - -// Keyframes -// - -@keyframes expand { - from { - max-height: 0px; - } - to { - max-height: 500px; - } -} - -@keyframes collapse { - from { - max-height: 500px; - } - to { - max-height: 0px; - } -} - -// Bootstrap 3 -// - -.panel-collapse { - - &.am-collapse { - - &.in-remove { - animation-name: collapse; - display: block; - } - &.in-add { - animation-name: expand; - } - - } - -} diff --git a/data-mgmt/src/main/webapp/bower_components/angular-motion/src/fade-and-scale/fade-and-scale.less b/data-mgmt/src/main/webapp/bower_components/angular-motion/src/fade-and-scale/fade-and-scale.less deleted file mode 100644 index b2f5586..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-motion/src/fade-and-scale/fade-and-scale.less +++ /dev/null @@ -1,62 +0,0 @@ - -// Fade & Slide -// - -@fade-and-scale-duration: .3s; -@fade-and-scale-timing-function: ease-in-out; - -.am-fade-and-scale { - - animation-duration: @fade-and-scale-duration; - animation-timing-function: @fade-and-scale-timing-function; - animation-fill-mode: backwards; - - &.ng-enter, &.am-fade-and-scale-add, &.ng-hide-remove, &.ng-move { - animation-name: fadeAndScaleIn; - } - &.ng-leave, &.am-fade-and-scale-remove, &.ng-hide { - animation-name: fadeAndScaleOut; - } - - &.ng-enter { - visibility: hidden; - animation-name: fadeAndScaleIn; - animation-play-state: paused; - &.ng-enter-active { - visibility: visible; - animation-play-state: running; - } - } - &.ng-leave { - animation-name: fadeAndScaleOut; - animation-play-state: paused; - &.ng-leave-active { - animation-play-state: running; - } - } - -} - - -// Keyframes -// - -@keyframes fadeAndScaleIn { - from { - opacity: 0; - transform: scale(0.7); - } - to { - opacity: 1; - } -} - -@keyframes fadeAndScaleOut { - from { - opacity: 1; - } - to { - opacity: 0; - transform: scale(0.7); - } -} diff --git a/data-mgmt/src/main/webapp/bower_components/angular-motion/src/fade-and-slide/fade-and-slide.less b/data-mgmt/src/main/webapp/bower_components/angular-motion/src/fade-and-slide/fade-and-slide.less deleted file mode 100644 index fb89b7b..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-motion/src/fade-and-slide/fade-and-slide.less +++ /dev/null @@ -1,218 +0,0 @@ - -// Fade & Slide -// - -@fade-and-slide-duration: .3s; -@fade-and-slide-timing-function: ease-in-out; - -.am-fade-and-slide-top { - - animation-duration: @fade-and-slide-duration; - animation-timing-function: @fade-and-slide-timing-function; - animation-fill-mode: backwards; - - &.am-fade-and-slide-top-add, &.ng-hide-remove, &.ng-move { - animation-name: fadeAndSlideFromTop; - } - &.am-fade-and-slide-top-remove, &.ng-hide { - animation-name: fadeAndSlideToTop; - } - - &.ng-enter { - visibility: hidden; - animation-name: fadeAndSlideFromTop; - animation-play-state: paused; - &.ng-enter-active { - visibility: visible; - animation-play-state: running; - } - } - &.ng-leave { - animation-name: fadeAndSlideToTop; - animation-play-state: paused; - &.ng-leave-active { - animation-play-state: running; - } - } - -} - -.am-fade-and-slide-right { - - animation-duration: @fade-and-slide-duration; - animation-timing-function: @fade-and-slide-timing-function; - animation-fill-mode: backwards; - - &.am-fade-and-slide-right-add, &.ng-hide-remove, &.ng-move { - animation-name: fadeAndSlideFromRight; - } - &.am-fade-and-slide-right-remove, &.ng-hide { - animation-name: fadeAndSlideToRight; - } - - &.ng-enter { - visibility: hidden; - animation-name: fadeAndSlideFromRight; - animation-play-state: paused; - &.ng-enter-active { - visibility: visible; - animation-play-state: running; - } - } - &.ng-leave { - animation-name: fadeAndSlideToRight; - animation-play-state: paused; - &.ng-leave-active { - animation-play-state: running; - } - } - -} - -.am-fade-and-slide-bottom { - - animation-duration: @fade-and-slide-duration; - animation-timing-function: @fade-and-slide-timing-function; - animation-fill-mode: backwards; - - &.am-fade-and-slide-bottom-add, &.ng-hide-remove, &.ng-move { - animation-name: fadeAndSlideFromBottom; - } - &.am-fade-and-slide-bottom-remove, &.ng-hide { - animation-name: fadeAndSlideToBottom; - } - - &.ng-enter { - visibility: hidden; - animation-name: fadeAndSlideFromBottom; - animation-play-state: paused; - &.ng-enter-active { - visibility: visible; - animation-play-state: running; - } - } - &.ng-leave { - animation-name: fadeAndSlideToBottom; - animation-play-state: paused; - &.ng-leave-active { - animation-play-state: running; - } - } - -} - -.am-fade-and-slide-left { - - animation-duration: @fade-and-slide-duration; - animation-timing-function: @fade-and-slide-timing-function; - animation-fill-mode: backwards; - - &.am-fade-and-slide-left-add, &.ng-hide-remove, &.ng-move { - animation-fill-mode: backwards; - animation-name: fadeAndSlideFromLeft; - } - &.am-fade-and-slide-left-remove, &.ng-hide { - animation-name: fadeAndSlideToLeft; - } - - &.ng-enter { - visibility: hidden; - animation-name: fadeAndSlideFromLeft; - animation-play-state: paused; - &.ng-enter-active { - visibility: visible; - animation-play-state: running; - } - } - &.ng-leave { - animation-name: fadeAndSlideToLeft; - animation-play-state: paused; - &.ng-leave-active { - animation-play-state: running; - } - } - -} - - -// Keyframes -// - -@keyframes fadeAndSlideFromTop { - from { - opacity: 0; - transform: translateY(-20%); - } - to { - opacity: 1; - } -} - -@keyframes fadeAndSlideToTop { - from { - opacity: 1; - } - to { - opacity: 0; - transform: translateY(-20%); - } -} - -@keyframes fadeAndSlideFromRight { - from { - opacity: 0; - transform: translateX(20%); - } - to { - opacity: 1; - } -} -@keyframes fadeAndSlideToRight { - from { - opacity: 1; - } - to { - opacity: 0; - transform: translateX(20%); - } -} - -@keyframes fadeAndSlideFromBottom { - from { - opacity: 0; - transform: translateY(20%); - } - to { - opacity: 1; - } -} - -@keyframes fadeAndSlideToBottom { - from { - opacity: 1; - } - to { - opacity: 0; - transform: translateY(20%); - } -} - -@keyframes fadeAndSlideFromLeft { - from { - opacity: 0; - transform: translateX(-20%); - } - to { - opacity: 1; - } -} - -@keyframes fadeAndSlideToLeft { - from { - opacity: 1; - } - to { - opacity: 0; - transform: translateX(-20%); - } -} diff --git a/data-mgmt/src/main/webapp/bower_components/angular-motion/src/fade/fade.less b/data-mgmt/src/main/webapp/bower_components/angular-motion/src/fade/fade.less deleted file mode 100644 index 2a9ffdf..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-motion/src/fade/fade.less +++ /dev/null @@ -1,93 +0,0 @@ - -// Fade -// - -@fade-duration: .3s; -@fade-timing-function: linear; - -.am-fade { - - animation-duration: @fade-duration; - animation-timing-function: @fade-timing-function; - animation-fill-mode: backwards; - opacity: 1; - - &.am-fade-add, &.ng-hide-remove, &.ng-move { - animation-name: fadeIn; - } - &.am-fade-remove, &.ng-hide { - animation-name: fadeOut; - } - - &.ng-enter { - visibility: hidden; - animation-name: fadeIn; - animation-play-state: paused; - &.ng-enter-active { - visibility: visible; - animation-play-state: running; - } - } - &.ng-leave { - animation-name: fadeOut; - animation-play-state: paused; - &.ng-leave-active { - animation-play-state: running; - } - } - -} - - -// Keyframes -// - -@keyframes fadeIn { - from { - opacity: 0; - } - to { - opacity: 1; - } -} - -@keyframes fadeOut { - from { - opacity: 1; - } - to { - opacity: 0; - } -} - -// Bootstrap 3 -// - -.tab-pane { - - &.am-fade { - - &.active-remove { - display: none !important; - } - &.active-add { - animation-name: fadeIn; - } - - } - -} - -.modal-backdrop, .aside-backdrop { - - &.am-fade { - - background: rgba(0, 0, 0, .5); - animation-duration: @fade-duration / 2; - &.ng-leave { - animation-delay: @fade-duration; - } - - } - -} diff --git a/data-mgmt/src/main/webapp/bower_components/angular-motion/src/flip/flip.less b/data-mgmt/src/main/webapp/bower_components/angular-motion/src/flip/flip.less deleted file mode 100644 index b69a0da..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-motion/src/flip/flip.less +++ /dev/null @@ -1,113 +0,0 @@ - - -// Fade -// - -@flip-duration: .4s; -@flip-timing-function: ease; - -.am-flip-x { - - animation-duration: @flip-duration; - animation-timing-function: @flip-timing-function; - animation-fill-mode: backwards; - - &.am-flip-x-add, &.ng-hide-remove, &.ng-move { - animation-name: flipInXBounce; - } - &.am-flip-x-remove, &.ng-hide { - animation-name: flipOutX; - } - - &.ng-enter { - visibility: hidden; - animation-name: flipInXBounce; - animation-play-state: paused; - &.ng-enter-active { - visibility: visible; - animation-play-state: running; - } - } - &.ng-leave { - animation-name: flipOutX; - animation-play-state: paused; - &.ng-leave-active { - animation-play-state: running; - } - } - -} - -.am-flip-x-linear { - - animation-duration: @flip-duration; - animation-timing-function: @flip-timing-function; - animation-fill-mode: backwards; - - &.am-flip-x-add, &.ng-hide-remove, &.ng-move { - animation-name: flipInX; - } - &.am-flip-x-remove, &.ng-hide { - animation-name: flipOutX; - } - - &.ng-enter { - visibility: hidden; - animation-name: flipInX; - animation-play-state: paused; - &.ng-enter-active { - visibility: visible; - animation-play-state: running; - } - } - &.ng-leave { - animation-name: flipOutX; - animation-play-state: paused; - &.ng-leave-active { - animation-play-state: running; - } - } - -} - -// Keyframes -// - -@keyframes flipInX { - from { - opacity: 0; - transform: perspective(400px) rotateX(90deg); - } - to { - opacity: 1; - transform: perspective(400px) rotateX(0deg); - } -} - -@keyframes flipInXBounce { - from { - opacity: 0; - transform: perspective(400px) rotateX(90deg); - } - 40% { - transform: perspective(400px) rotateX(-10deg); - } - 70% { - transform: perspective(400px) rotateX(10deg); - } - to { - opacity: 1; - transform: perspective(400px) rotateX(0deg); - } -} - -@keyframes flipOutX { - from { - opacity: 1; - transform: perspective(400px) rotateX(0deg); - } - to { - opacity: 0; - transform: perspective(400px) rotateX(90deg); - } -} diff --git a/data-mgmt/src/main/webapp/bower_components/angular-motion/src/slide/slide.less b/data-mgmt/src/main/webapp/bower_components/angular-motion/src/slide/slide.less deleted file mode 100644 index b6f9bc6..0000000 --- a/data-mgmt/src/main/webapp/bower_components/angular-motion/src/slide/slide.less +++ /dev/null @@ -1,184 +0,0 @@ - -// Slide -// - -@slide-duration: .3s; -@slide-timing-function: ease-in-out; - -.am-slide-top { - - animation-duration: @slide-duration; - animation-timing-function: @slide-timing-function; - animation-fill-mode: backwards; - - &.am-slide-top-add, &.ng-hide-remove, &.ng-move { - animation-name: slideFromTop; - } - &.am-slide-top-remove, &.ng-hide { - animation-name: slideToTop; - } - - &.ng-enter { - visibility: hidden; - animation-name: slideFromTop; - animation-play-state: paused; - &.ng-enter-active { - visibility: visible; - animation-play-state: running; - } - } - &.ng-leave { - animation-name: slideToTop; - animation-play-state: paused; - &.ng-leave-active { - animation-play-state: running; - } - } - -} - -.am-slide-right { - - animation-duration: @slide-duration; - animation-timing-function: @slide-timing-function; - animation-fill-mode: backwards; - - &.am-slide-right-add, &.ng-hide-remove, &.ng-move { - animation-name: slideFromRight; - } - &.am-slide-right-remove, &.ng-hide { - animation-name: slideToRight; - } - - &.ng-enter { - visibility: hidden; - animation-name: slideFromRight; - animation-play-state: paused; - &.ng-enter-active { - visibility: visible; - animation-play-state: running; - } - } - &.ng-leave { - animation-name: slideToRight; - animation-play-state: paused; - &.ng-leave-active { - animation-play-state: running; - } - } - -} - -.am-slide-bottom { - - animation-duration: @slide-duration; - animation-timing-function: @slide-timing-function; - animation-fill-mode: backwards; - - &.am-slide-bottom-add, &.ng-hide-remove, &.ng-move { - animation-name: slideFromBottom; - } - &.am-slide-bottom-remove, &.ng-hide { - animation-name: slideToBottom; - } - - &.ng-enter { - visibility: hidden; - animation-name: slideFromBottom; - animation-play-state: paused; - &.ng-enter-active { - visibility: visible; - animation-play-state: running; - } - } - &.ng-leave { - animation-name: slideToBottom; - animation-play-state: paused; - &.ng-leave-active { - animation-play-state: running; - } - } - -} - -.am-slide-left { - - animation-duration: @slide-duration; - animation-timing-function: @slide-timing-function; - animation-fill-mode: backwards; - - &.am-slide-left-add, &.ng-hide-remove, &.ng-move { - animation-name: slideFromLeft; - } - &.am-slide-left-remove, &.ng-hide { - animation-name: slideToLeft; - } - - &.ng-enter { - visibility: hidden; - animation-name: slideFromLeft; - animation-play-state: paused; - &.ng-enter-active { - visibility: visible; - animation-play-state: running; - } - } - &.ng-leave { - animation-name: slideToLeft; - animation-play-state: paused; - &.ng-leave-active { - animation-play-state: running; - } - } - -} - - -// Keyframes -// - -@keyframes slideFromTop { - from { - transform: translateY(-100%); - } -} - -@keyframes slideToTop { - to { - transform: translateY(-100%); - } -} - -@keyframes slideFromRight { - from { - transform: translateX(100%); - } -} -@keyframes slideToRight { - to { - transform: translateX(100%); - } -} - -@keyframes slideFromBottom { - from { - transform: translateY(100%); - } -} - -@keyframes slideToBottom { - to { - transform: translateY(100%); - } -} - -@keyframes slideFromLeft { - from { - transform: translateX(-100%); - } -} -@keyframes slideToLeft { - to { - transform: translateX(-100%); - } -} diff --git a/data-mgmt/src/main/webapp/bower_components/angular-route/.bower.json b/data-mgmt/src/main/webapp/bower_components/angular-route/.bower.json index d5b06fc..4d0a991 100644 --- a/data-mgmt/src/main/webapp/bower_components/angular-route/.bower.json +++ b/data-mgmt/src/main/webapp/bower_components/angular-route/.bower.json @@ -1,19 +1,19 @@ { "name": "angular-route", - "version": "1.3.4", + "version": "1.3.15", "main": "./angular-route.js", "ignore": [], "dependencies": { - "angular": "1.3.4" + "angular": "1.3.15" }, "homepage": "https://github.com/angular/bower-angular-route", - "_release": "1.3.4", + "_release": "1.3.15", "_resolution": { "type": "version", - "tag": "v1.3.4", - "commit": "f5b509929b7d7e779ead20512fd5d405829baf3e" + "tag": "v1.3.15", + "commit": "1f6e6ac94e20b98bca10155363042411f7729ce2" }, "_source": "git://github.com/angular/bower-angular-route.git", - "_target": "~1.3.x", + "_target": "1.3.15", "_originalSource": "angular-route" } \ No newline at end of file diff --git a/data-mgmt/src/main/webapp/bower_components/angular-route/README.md b/data-mgmt/src/main/webapp/bower_components/angular-route/README.md index b33a0dc..2cd4f90 100644 --- a/data-mgmt/src/main/webapp/bower_components/angular-route/README.md +++ b/data-mgmt/src/main/webapp/bower_components/angular-route/README.md @@ -14,21 +14,12 @@ You can install this package either with `npm` or with `bower`. npm install angular-route ``` -Add a ` -``` - Then add `ngRoute` as a dependency for your app: ```javascript -angular.module('myApp', ['ngRoute']); +angular.module('myApp', [require('angular-route')]); ``` -Note that this package is not in CommonJS format, so doing `require('angular-route')` will -return `undefined`. - ### bower ```shell @@ -56,7 +47,7 @@ Documentation is available on the The MIT License -Copyright (c) 2010-2012 Google, Inc. http://angularjs.org +Copyright (c) 2010-2015 Google, Inc. http://angularjs.org Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/data-mgmt/src/main/webapp/bower_components/angular-route/angular-route.js b/data-mgmt/src/main/webapp/bower_components/angular-route/angular-route.js index 6820318..68150e7 100644 --- a/data-mgmt/src/main/webapp/bower_components/angular-route/angular-route.js +++ b/data-mgmt/src/main/webapp/bower_components/angular-route/angular-route.js @@ -1,5 +1,5 @@ /** - * @license AngularJS v1.3.4 + * @license AngularJS v1.3.15 * (c) 2010-2014 Google, Inc. http://angularjs.org * License: MIT */ @@ -180,7 +180,7 @@ function $RouteProvider() { * @description * * A boolean property indicating if routes defined - * using this provider should be matched using a case sensitive + * using this provider should be matched using a case insensitive * algorithm. Defaults to `false`. */ this.caseInsensitiveMatch = false; @@ -482,21 +482,15 @@ function $RouteProvider() { * definitions will be interpolated into the location's path, while * remaining properties will be treated as query params. * - * @param {Object} newParams mapping of URL parameter names to values + * @param {!Object} newParams mapping of URL parameter names to values */ updateParams: function(newParams) { if (this.current && this.current.$$route) { - var searchParams = {}, self=this; - - angular.forEach(Object.keys(newParams), function(key) { - if (!self.current.pathParams[key]) searchParams[key] = newParams[key]; - }); - newParams = angular.extend({}, this.current.params, newParams); $location.path(interpolate(this.current.$$route.originalPath, newParams)); - $location.search(angular.extend({}, $location.search(), searchParams)); - } - else { + // interpolate modifies newParams, only query params are left + $location.search(newParams); + } else { throw $routeMinErr('norout', 'Tried updating route when with no current route'); } } @@ -788,7 +782,6 @@ ngRouteModule.directive('ngView', ngViewFillContentFactory); .view-animate-container { position:relative; height:100px!important; - position:relative; background:white; border:1px solid black; height:40px; diff --git a/data-mgmt/src/main/webapp/bower_components/angular-route/angular-route.min.js b/data-mgmt/src/main/webapp/bower_components/angular-route/angular-route.min.js index c082a89..ca3e81b 100644 --- a/data-mgmt/src/main/webapp/bower_components/angular-route/angular-route.min.js +++ b/data-mgmt/src/main/webapp/bower_components/angular-route/angular-route.min.js @@ -1,15 +1,15 @@ /* - AngularJS v1.3.4 + AngularJS v1.3.15 (c) 2010-2014 Google, Inc. http://angularjs.org License: MIT */ -(function(p,d,C){'use strict';function v(r,h,g){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(a,c,b,f,y){function z(){k&&(g.cancel(k),k=null);l&&(l.$destroy(),l=null);m&&(k=g.leave(m),k.then(function(){k=null}),m=null)}function x(){var b=r.current&&r.current.locals;if(d.isDefined(b&&b.$template)){var b=a.$new(),f=r.current;m=y(b,function(b){g.enter(b,null,m||c).then(function(){!d.isDefined(t)||t&&!a.$eval(t)||h()});z()});l=f.scope=b;l.$emit("$viewContentLoaded"); -l.$eval(w)}else z()}var l,m,k,t=b.autoscroll,w=b.onload||"";a.$on("$routeChangeSuccess",x);x()}}}function A(d,h,g){return{restrict:"ECA",priority:-400,link:function(a,c){var b=g.current,f=b.locals;c.html(f.$template);var y=d(c.contents());b.controller&&(f.$scope=a,f=h(b.controller,f),b.controllerAs&&(a[b.controllerAs]=f),c.data("$ngControllerController",f),c.children().data("$ngControllerController",f));y(a)}}}p=d.module("ngRoute",["ng"]).provider("$route",function(){function r(a,c){return d.extend(Object.create(a), -c)}function h(a,d){var b=d.caseInsensitiveMatch,f={originalPath:a,regexp:a},g=f.keys=[];a=a.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)([\?\*])?/g,function(a,d,b,c){a="?"===c?c:null;c="*"===c?c:null;g.push({name:b,optional:!!a});d=d||"";return""+(a?"":d)+"(?:"+(a?d:"")+(c&&"(.+?)"||"([^/]+)")+(a||"")+")"+(a||"")}).replace(/([\/$\*])/g,"\\$1");f.regexp=new RegExp("^"+a+"$",b?"i":"");return f}var g={};this.when=function(a,c){var b=d.copy(c);d.isUndefined(b.reloadOnSearch)&&(b.reloadOnSearch=!0); -d.isUndefined(b.caseInsensitiveMatch)&&(b.caseInsensitiveMatch=this.caseInsensitiveMatch);g[a]=d.extend(b,a&&h(a,b));if(a){var f="/"==a[a.length-1]?a.substr(0,a.length-1):a+"/";g[f]=d.extend({redirectTo:a},h(f,b))}return this};this.caseInsensitiveMatch=!1;this.otherwise=function(a){"string"===typeof a&&(a={redirectTo:a});this.when(null,a);return this};this.$get=["$rootScope","$location","$routeParams","$q","$injector","$templateRequest","$sce",function(a,c,b,f,h,p,x){function l(b){var e=s.current; -(v=(n=k())&&e&&n.$$route===e.$$route&&d.equals(n.pathParams,e.pathParams)&&!n.reloadOnSearch&&!w)||!e&&!n||a.$broadcast("$routeChangeStart",n,e).defaultPrevented&&b&&b.preventDefault()}function m(){var u=s.current,e=n;if(v)u.params=e.params,d.copy(u.params,b),a.$broadcast("$routeUpdate",u);else if(e||u)w=!1,(s.current=e)&&e.redirectTo&&(d.isString(e.redirectTo)?c.path(t(e.redirectTo,e.params)).search(e.params).replace():c.url(e.redirectTo(e.pathParams,c.path(),c.search())).replace()),f.when(e).then(function(){if(e){var a= -d.extend({},e.resolve),b,c;d.forEach(a,function(b,e){a[e]=d.isString(b)?h.get(b):h.invoke(b,null,null,e)});d.isDefined(b=e.template)?d.isFunction(b)&&(b=b(e.params)):d.isDefined(c=e.templateUrl)&&(d.isFunction(c)&&(c=c(e.params)),c=x.getTrustedResourceUrl(c),d.isDefined(c)&&(e.loadedTemplateUrl=c,b=p(c)));d.isDefined(b)&&(a.$template=b);return f.all(a)}}).then(function(c){e==s.current&&(e&&(e.locals=c,d.copy(e.params,b)),a.$broadcast("$routeChangeSuccess",e,u))},function(b){e==s.current&&a.$broadcast("$routeChangeError", -e,u,b)})}function k(){var a,b;d.forEach(g,function(f,g){var q;if(q=!b){var h=c.path();q=f.keys;var l={};if(f.regexp)if(h=f.regexp.exec(h)){for(var k=1,m=h.length;k` to your `index.html`: - -```html - -``` - Then add `ngSanitize` as a dependency for your app: ```javascript -angular.module('myApp', ['ngSanitize']); +angular.module('myApp', [require('angular-sanitize')]); ``` -Note that this package is not in CommonJS format, so doing `require('angular-sanitize')` will -return `undefined`. - ### bower ```shell @@ -56,7 +47,7 @@ Documentation is available on the The MIT License -Copyright (c) 2010-2012 Google, Inc. http://angularjs.org +Copyright (c) 2010-2015 Google, Inc. http://angularjs.org Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/data-mgmt/src/main/webapp/bower_components/angular-sanitize/angular-sanitize.js b/data-mgmt/src/main/webapp/bower_components/angular-sanitize/angular-sanitize.js index f463a8c..61c5089 100644 --- a/data-mgmt/src/main/webapp/bower_components/angular-sanitize/angular-sanitize.js +++ b/data-mgmt/src/main/webapp/bower_components/angular-sanitize/angular-sanitize.js @@ -1,10 +1,21 @@ /** - * @license AngularJS v1.3.4 + * @license AngularJS v1.3.15 * (c) 2010-2014 Google, Inc. http://angularjs.org * License: MIT */ (function(window, angular, undefined) {'use strict'; +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Any commits to this file should be reviewed with security in mind. * + * Changes to this file can potentially create security vulnerabilities. * + * An approval from 2 Core members with history of modifying * + * this file is required. * + * * + * Does the change somehow allow for arbitrary javascript to be executed? * + * Or allows for someone to change the prototype of built-in objects? * + * Or gives undesired access to variables likes document or window? * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + var $sanitizeMinErr = angular.$$minErr('$sanitize'); /** @@ -276,14 +287,14 @@ function htmlParser(html, handler) { } } var index, chars, match, stack = [], last = html, text; - stack.last = function() { return stack[ stack.length - 1 ]; }; + stack.last = function() { return stack[stack.length - 1]; }; while (html) { text = ''; chars = true; // Make sure we're not in a script or style element - if (!stack.last() || !specialElements[ stack.last() ]) { + if (!stack.last() || !specialElements[stack.last()]) { // Comment if (html.indexOf(" - [...] - -``` - -You need to write: -```HTML - - [...] - -``` - -Or: -```HTML - - [...] - -``` - -For more explanations, check [ui-select #18](https://github.com/angular-ui/ui-select/issues/18) and [angular.js #6199](https://github.com/angular/angular.js/issues/6199). - -### ng-bind-html gives me "Error: [$sce:unsafe] Attempting to use an unsafe value in a safe context" - -You need to use module [ngSanitize](http://docs.angularjs.org/api/ngSanitize) (recommended) or [$sce](http://docs.angularjs.org/api/ng/service/$sce): - -```JavaScript -$scope.trustAsHtml = function(value) { - return $sce.trustAsHtml(value); -}; -``` - -```HTML -
-``` - -### I get "TypeError: Object [...] has no method 'indexOf' at htmlParser" - -You are using ng-bind-html with a number: -```HTML -
-``` - -You should write instead: -```HTML -
-``` - -Or: -```HTML -
-``` ## Development + ### Prepare your environment * Install [Node.js](http://nodejs.org/) and NPM (should come with) * Install global dev dependencies: `npm install -g bower gulp` diff --git a/data-mgmt/src/main/webapp/bower_components/angular-ui-select/bower.json b/data-mgmt/src/main/webapp/bower_components/angular-ui-select/bower.json index f00f101..beb6f10 100644 --- a/data-mgmt/src/main/webapp/bower_components/angular-ui-select/bower.json +++ b/data-mgmt/src/main/webapp/bower_components/angular-ui-select/bower.json @@ -1,6 +1,6 @@ { "name": "ui-select", - "version": "0.8.3", + "version": "0.11.2", "homepage": "https://github.com/angular-ui/ui-select", "authors": [ "AngularUI" diff --git a/data-mgmt/src/main/webapp/bower_components/angular-ui-select/dist/select.css b/data-mgmt/src/main/webapp/bower_components/angular-ui-select/dist/select.css index ae12d8e..d397c97 100644 --- a/data-mgmt/src/main/webapp/bower_components/angular-ui-select/dist/select.css +++ b/data-mgmt/src/main/webapp/bower_components/angular-ui-select/dist/select.css @@ -1,7 +1,7 @@ /*! * ui-select * http://github.com/angular-ui/ui-select - * Version: 0.8.3 - 2014-10-14T18:22:05.435Z + * Version: 0.11.2 - 2015-03-17T04:08:46.478Z * License: MIT */ @@ -36,6 +36,18 @@ padding-left: 0; } +.select2-locked > .select2-search-choice-close{ + display:none; +} + +.select-locked > .ui-select-match-close{ + display:none; +} + +body > .select2-container.open { + z-index: 9999; /* The z-index Select2 applies to the select2-drop */ +} + /* Selectize theme */ /* Helper class to show styles when focus */ @@ -72,6 +84,17 @@ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); } +.ui-select-bootstrap .ui-select-toggle { + position: relative; +} + +.ui-select-bootstrap .ui-select-toggle > .caret { + position: absolute; + height: 10px; + top: 50%; + right: 10px; + margin-top: -2px; +} /* Fix Bootstrap dropdown position when inside a input-group */ .input-group > .ui-select-bootstrap.dropdown { @@ -85,9 +108,9 @@ border-bottom-right-radius: 0; } -.ui-select-bootstrap > .ui-select-match { +.ui-select-bootstrap > .ui-select-match > .btn{ /* Instead of center because of .btn */ - text-align: left; + text-align: left !important; } .ui-select-bootstrap > .ui-select-match > .caret { @@ -102,11 +125,16 @@ height: auto; max-height: 200px; overflow-x: hidden; + margin-top: -1px; +} + +body > .ui-select-bootstrap.open { + z-index: 1000; /* Standard Bootstrap dropdown z-index */ } .ui-select-multiple.ui-select-bootstrap { height: auto; - padding: .3em; + padding: 3px 3px 0 3px; } .ui-select-multiple.ui-select-bootstrap input.ui-select-search { @@ -114,6 +142,7 @@ border: none; outline: none; height: 1.666666em; + margin-bottom: 3px; } .ui-select-multiple.ui-select-bootstrap .ui-select-match .close { @@ -121,8 +150,33 @@ line-height: 0.75; } -.ui-select-multiple.ui-select-bootstrap .ui-select-match-item{ +.ui-select-multiple.ui-select-bootstrap .ui-select-match-item { outline: 0; + margin: 0 3px 3px 0; +} + +.ui-select-multiple .ui-select-match-item { + position: relative; +} + +.ui-select-multiple .ui-select-match-item.dropping-before:before { + content: ""; + position: absolute; + top: 0; + right: 100%; + height: 100%; + margin-right: 2px; + border-left: 1px solid #428bca; +} + +.ui-select-multiple .ui-select-match-item.dropping-after:after { + content: ""; + position: absolute; + top: 0; + left: 100%; + height: 100%; + margin-left: 2px; + border-right: 1px solid #428bca; } .ui-select-bootstrap .ui-select-choices-row>a { @@ -164,4 +218,4 @@ /* Mark invalid Bootstrap */ .ui-select-bootstrap.ng-dirty.ng-invalid > button.btn.ui-select-match { border-color: #D44950; -} +} \ No newline at end of file diff --git a/data-mgmt/src/main/webapp/bower_components/angular-ui-select/dist/select.js b/data-mgmt/src/main/webapp/bower_components/angular-ui-select/dist/select.js old mode 100755 new mode 100644 index 3afe26f..aa0e5ae --- a/data-mgmt/src/main/webapp/bower_components/angular-ui-select/dist/select.js +++ b/data-mgmt/src/main/webapp/bower_components/angular-ui-select/dist/select.js @@ -1,15 +1,15 @@ /*! * ui-select * http://github.com/angular-ui/ui-select - * Version: 0.8.3 - 2014-10-14T18:22:05.432Z + * Version: 0.11.2 - 2015-03-17T04:08:46.474Z * License: MIT */ -(function () { - "use strict"; +(function () { +"use strict"; - var KEY = { +var KEY = { TAB: 9, ENTER: 13, ESC: 27, @@ -28,6 +28,10 @@ BACKSPACE: 8, DELETE: 46, COMMAND: 91, + + MAP: { 91 : "COMMAND", 8 : "BACKSPACE" , 9 : "TAB" , 13 : "ENTER" , 16 : "SHIFT" , 17 : "CTRL" , 18 : "ALT" , 19 : "PAUSEBREAK" , 20 : "CAPSLOCK" , 27 : "ESC" , 32 : "SPACE" , 33 : "PAGE_UP", 34 : "PAGE_DOWN" , 35 : "END" , 36 : "HOME" , 37 : "LEFT" , 38 : "UP" , 39 : "RIGHT" , 40 : "DOWN" , 43 : "+" , 44 : "PRINTSCREEN" , 45 : "INSERT" , 46 : "DELETE", 48 : "0" , 49 : "1" , 50 : "2" , 51 : "3" , 52 : "4" , 53 : "5" , 54 : "6" , 55 : "7" , 56 : "8" , 57 : "9" , 59 : ";", 61 : "=" , 65 : "A" , 66 : "B" , 67 : "C" , 68 : "D" , 69 : "E" , 70 : "F" , 71 : "G" , 72 : "H" , 73 : "I" , 74 : "J" , 75 : "K" , 76 : "L", 77 : "M" , 78 : "N" , 79 : "O" , 80 : "P" , 81 : "Q" , 82 : "R" , 83 : "S" , 84 : "T" , 85 : "U" , 86 : "V" , 87 : "W" , 88 : "X" , 89 : "Y" , 90 : "Z", 96 : "0" , 97 : "1" , 98 : "2" , 99 : "3" , 100 : "4" , 101 : "5" , 102 : "6" , 103 : "7" , 104 : "8" , 105 : "9", 106 : "*" , 107 : "+" , 109 : "-" , 110 : "." , 111 : "/", 112 : "F1" , 113 : "F2" , 114 : "F3" , 115 : "F4" , 116 : "F5" , 117 : "F6" , 118 : "F7" , 119 : "F8" , 120 : "F9" , 121 : "F10" , 122 : "F11" , 123 : "F12", 144 : "NUMLOCK" , 145 : "SCROLLLOCK" , 186 : ";" , 187 : "=" , 188 : "," , 189 : "-" , 190 : "." , 191 : "/" , 192 : "`" , 219 : "[" , 220 : "\\" , 221 : "]" , 222 : "'" + }, + isControl: function (e) { var k = e.which; switch (k) { @@ -54,710 +58,746 @@ } }; - /** - * Add querySelectorAll() to jqLite. - * - * jqLite find() is limited to lookups by tag name. - * TODO This will change with future versions of AngularJS, to be removed when this happens - * - * See jqLite.find - why not use querySelectorAll? https://github.com/angular/angular.js/issues/3586 - * See feat(jqLite): use querySelectorAll instead of getElementsByTagName in jqLite.find https://github.com/angular/angular.js/pull/3598 - */ - if (angular.element.prototype.querySelectorAll === undefined) { - angular.element.prototype.querySelectorAll = function(selector) { - return angular.element(this[0].querySelectorAll(selector)); +/** + * Add querySelectorAll() to jqLite. + * + * jqLite find() is limited to lookups by tag name. + * TODO This will change with future versions of AngularJS, to be removed when this happens + * + * See jqLite.find - why not use querySelectorAll? https://github.com/angular/angular.js/issues/3586 + * See feat(jqLite): use querySelectorAll instead of getElementsByTagName in jqLite.find https://github.com/angular/angular.js/pull/3598 + */ +if (angular.element.prototype.querySelectorAll === undefined) { + angular.element.prototype.querySelectorAll = function(selector) { + return angular.element(this[0].querySelectorAll(selector)); + }; +} + +/** + * Add closest() to jqLite. + */ +if (angular.element.prototype.closest === undefined) { + angular.element.prototype.closest = function( selector) { + var elem = this[0]; + var matchesSelector = elem.matches || elem.webkitMatchesSelector || elem.mozMatchesSelector || elem.msMatchesSelector; + + while (elem) { + if (matchesSelector.bind(elem)(selector)) { + return elem; + } else { + elem = elem.parentElement; + } + } + return false; + }; +} + +var latestId = 0; + +var uis = angular.module('ui.select', []) + +.constant('uiSelectConfig', { + theme: 'bootstrap', + searchEnabled: true, + sortable: false, + placeholder: '', // Empty by default, like HTML tag - refreshDelay: 1000 // In milliseconds - }) - - // See Rename minErr and make it accessible from outside https://github.com/angular/angular.js/issues/6913 - .service('uiSelectMinErr', function() { - var minErr = angular.$$minErr('ui.select'); - return function() { - var error = minErr.apply(this, arguments); - var message = error.message.replace(new RegExp('\nhttp://errors.angularjs.org/.*'), ''); - return new Error(message); + return function(matchItem, query) { + return query && matchItem ? matchItem.replace(new RegExp(escapeRegexp(query), 'gi'), '$&') : matchItem; + }; +}) + +/** + * A read-only equivalent of jQuery's offset function: http://api.jquery.com/offset/ + * + * Taken from AngularUI Bootstrap Position: + * See https://github.com/angular-ui/bootstrap/blob/master/src/position/position.js#L70 + */ +.factory('uisOffset', + ['$document', '$window', + function ($document, $window) { + + return function(element) { + var boundingClientRect = element[0].getBoundingClientRect(); + return { + width: boundingClientRect.width || element.prop('offsetWidth'), + height: boundingClientRect.height || element.prop('offsetHeight'), + top: boundingClientRect.top + ($window.pageYOffset || $document[0].documentElement.scrollTop), + left: boundingClientRect.left + ($window.pageXOffset || $document[0].documentElement.scrollLeft) }; - }) + }; +}]); + +uis.directive('uiSelectChoices', + ['uiSelectConfig', 'uisRepeatParser', 'uiSelectMinErr', '$compile', + function(uiSelectConfig, RepeatParser, uiSelectMinErr, $compile) { + + return { + restrict: 'EA', + require: '^uiSelect', + replace: true, + transclude: true, + templateUrl: function(tElement) { + // Gets theme attribute from parent (ui-select) + var theme = tElement.parent().attr('theme') || uiSelectConfig.theme; + return theme + '/choices.tpl.html'; + }, - /** - * Parses "repeat" attribute. - * - * Taken from AngularJS ngRepeat source code - * See https://github.com/angular/angular.js/blob/v1.2.15/src/ng/directive/ngRepeat.js#L211 - * - * Original discussion about parsing "repeat" attribute instead of fully relying on ng-repeat: - * https://github.com/angular-ui/ui-select/commit/5dd63ad#commitcomment-5504697 - */ - .service('RepeatParser', ['uiSelectMinErr','$parse', function(uiSelectMinErr, $parse) { - var self = this; - - /** - * Example: - * expression = "address in addresses | filter: {street: $select.search} track by $index" - * itemName = "address", - * source = "addresses | filter: {street: $select.search}", - * trackByExp = "$index", - */ - self.parse = function(expression) { - - var match = expression.match(/^\s*(?:([\s\S]+?)\s+as\s+)?([\S]+?)\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?\s*$/); - - if (!match) { - throw uiSelectMinErr('iexp', "Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.", - expression); - } + compile: function(tElement, tAttrs) { - return { - itemName: match[2], // (lhs) Left-hand side, - source: $parse(match[3]), - trackByExp: match[4], - modelMapper: $parse(match[1] || match[2]) - }; + if (!tAttrs.repeat) throw uiSelectMinErr('repeat', "Expected 'repeat' expression."); - }; + return function link(scope, element, attrs, $select, transcludeFn) { - self.getGroupNgRepeatExpression = function() { - return '$group in $select.groups'; - }; + // var repeat = RepeatParser.parse(attrs.repeat); + var groupByExp = attrs.groupBy; - self.getNgRepeatExpression = function(itemName, source, trackByExp, grouped) { - var expression = itemName + ' in ' + (grouped ? '$group.items' : source); - if (trackByExp) { - expression += ' track by ' + trackByExp; - } - return expression; - }; - }]) + $select.parseRepeatAttr(attrs.repeat, groupByExp); //Result ready at $select.parserResult - /** - * Contains ui-select "intelligence". - * - * The goal is to limit dependency on the DOM whenever possible and - * put as much logic in the controller (instead of the link functions) as possible so it can be easily tested. - */ - .controller('uiSelectCtrl', - ['$scope', '$element', '$timeout', 'RepeatParser', 'uiSelectMinErr', - function($scope, $element, $timeout, RepeatParser, uiSelectMinErr) { + $select.disableChoiceExpression = attrs.uiDisableChoice; + $select.onHighlightCallback = attrs.onHighlight; + + if(groupByExp) { + var groups = element.querySelectorAll('.ui-select-choices-group'); + if (groups.length !== 1) throw uiSelectMinErr('rows', "Expected 1 .ui-select-choices-group but got '{0}'.", groups.length); + groups.attr('ng-repeat', RepeatParser.getGroupNgRepeatExpression()); + } - var ctrl = this; + var choices = element.querySelectorAll('.ui-select-choices-row'); + if (choices.length !== 1) { + throw uiSelectMinErr('rows', "Expected 1 .ui-select-choices-row but got '{0}'.", choices.length); + } - var EMPTY_SEARCH = ''; + choices.attr('ng-repeat', RepeatParser.getNgRepeatExpression($select.parserResult.itemName, '$select.items', $select.parserResult.trackByExp, groupByExp)) + .attr('ng-if', '$select.open') //Prevent unnecessary watches when dropdown is closed + .attr('ng-mouseenter', '$select.setActiveItem('+$select.parserResult.itemName +')') + .attr('ng-click', '$select.select(' + $select.parserResult.itemName + ',false,$event)'); - ctrl.placeholder = undefined; - ctrl.search = EMPTY_SEARCH; - ctrl.activeIndex = 0; - ctrl.activeMatchIndex = -1; - ctrl.items = []; - ctrl.selected = undefined; - ctrl.open = false; - ctrl.focus = false; - ctrl.focusser = undefined; //Reference to input element used to handle focus events - ctrl.disabled = undefined; // Initialized inside uiSelect directive link function - ctrl.searchEnabled = undefined; // Initialized inside uiSelect directive link function - ctrl.resetSearchInput = undefined; // Initialized inside uiSelect directive link function - ctrl.refreshDelay = undefined; // Initialized inside uiSelectChoices directive link function - ctrl.multiple = false; // Initialized inside uiSelect directive link function - ctrl.disableChoiceExpression = undefined; // Initialized inside uiSelect directive link function - - ctrl.isEmpty = function() { - return angular.isUndefined(ctrl.selected) || ctrl.selected === null || ctrl.selected === ''; - }; + var rowsInner = element.querySelectorAll('.ui-select-choices-row-inner'); + if (rowsInner.length !== 1) throw uiSelectMinErr('rows', "Expected 1 .ui-select-choices-row-inner but got '{0}'.", rowsInner.length); + rowsInner.attr('uis-transclude-append', ''); //Adding uisTranscludeAppend directive to row element after choices element has ngRepeat - var _searchInput = $element.querySelectorAll('input.ui-select-search'); - if (_searchInput.length !== 1) { - throw uiSelectMinErr('searchInput', "Expected 1 input.ui-select-search but got '{0}'.", _searchInput.length); + $compile(element, transcludeFn)(scope); //Passing current transcludeFn to be able to append elements correctly from uisTranscludeAppend + + scope.$watch('$select.search', function(newValue) { + if(newValue && !$select.open && $select.multiple) $select.activate(false, true); + $select.activeIndex = $select.tagging.isActivated ? -1 : 0; + $select.refresh(attrs.refresh); + }); + + attrs.$observe('refreshDelay', function() { + // $eval() is needed otherwise we get a string instead of a number + var refreshDelay = scope.$eval(attrs.refreshDelay); + $select.refreshDelay = refreshDelay !== undefined ? refreshDelay : uiSelectConfig.refreshDelay; + }); + }; } + }; +}]); - // Most of the time the user does not want to empty the search input when in typeahead mode - function _resetSearchInput() { - if (ctrl.resetSearchInput) { - ctrl.search = EMPTY_SEARCH; - //reset activeIndex - if (ctrl.selected && ctrl.items.length && !ctrl.multiple) { - ctrl.activeIndex = ctrl.items.indexOf(ctrl.selected); - } +/** + * Contains ui-select "intelligence". + * + * The goal is to limit dependency on the DOM whenever possible and + * put as much logic in the controller (instead of the link functions) as possible so it can be easily tested. + */ +uis.controller('uiSelectCtrl', + ['$scope', '$element', '$timeout', '$filter', 'uisRepeatParser', 'uiSelectMinErr', 'uiSelectConfig', + function($scope, $element, $timeout, $filter, RepeatParser, uiSelectMinErr, uiSelectConfig) { + + var ctrl = this; + + var EMPTY_SEARCH = ''; + + ctrl.placeholder = uiSelectConfig.placeholder; + ctrl.searchEnabled = uiSelectConfig.searchEnabled; + ctrl.sortable = uiSelectConfig.sortable; + ctrl.refreshDelay = uiSelectConfig.refreshDelay; + + ctrl.removeSelected = false; //If selected item(s) should be removed from dropdown list + ctrl.closeOnSelect = true; //Initialized inside uiSelect directive link function + ctrl.search = EMPTY_SEARCH; + + ctrl.activeIndex = 0; //Dropdown of choices + ctrl.items = []; //All available choices + + ctrl.open = false; + ctrl.focus = false; + ctrl.disabled = false; + ctrl.selected = undefined; + + ctrl.focusser = undefined; //Reference to input element used to handle focus events + ctrl.resetSearchInput = true; + ctrl.multiple = undefined; // Initialized inside uiSelect directive link function + ctrl.disableChoiceExpression = undefined; // Initialized inside uiSelectChoices directive link function + ctrl.tagging = {isActivated: false, fct: undefined}; + ctrl.taggingTokens = {isActivated: false, tokens: undefined}; + ctrl.lockChoiceExpression = undefined; // Initialized inside uiSelectMatch directive link function + ctrl.clickTriggeredSelect = false; + ctrl.$filter = $filter; + + ctrl.searchInput = $element.querySelectorAll('input.ui-select-search'); + if (ctrl.searchInput.length !== 1) { + throw uiSelectMinErr('searchInput', "Expected 1 input.ui-select-search but got '{0}'.", ctrl.searchInput.length); + } + + ctrl.isEmpty = function() { + return angular.isUndefined(ctrl.selected) || ctrl.selected === null || ctrl.selected === ''; + }; + + // Most of the time the user does not want to empty the search input when in typeahead mode + function _resetSearchInput() { + if (ctrl.resetSearchInput || (ctrl.resetSearchInput === undefined && uiSelectConfig.resetSearchInput)) { + ctrl.search = EMPTY_SEARCH; + //reset activeIndex + if (ctrl.selected && ctrl.items.length && !ctrl.multiple) { + ctrl.activeIndex = ctrl.items.indexOf(ctrl.selected); } } + } - // When the user clicks on ui-select, displays the dropdown list - ctrl.activate = function(initSearchValue, avoidReset) { - if (!ctrl.disabled && !ctrl.open) { - if(!avoidReset) _resetSearchInput(); - ctrl.focusser.prop('disabled', true); //Will reactivate it on .close() - ctrl.open = true; - ctrl.activeMatchIndex = -1; + // When the user clicks on ui-select, displays the dropdown list + ctrl.activate = function(initSearchValue, avoidReset) { + if (!ctrl.disabled && !ctrl.open) { + if(!avoidReset) _resetSearchInput(); - ctrl.activeIndex = ctrl.activeIndex >= ctrl.items.length ? 0 : ctrl.activeIndex; + $scope.$broadcast('uis:activate'); - // Give it time to appear before focus - $timeout(function() { - ctrl.search = initSearchValue || ctrl.search; - _searchInput[0].focus(); - }); + ctrl.open = true; + + ctrl.activeIndex = ctrl.activeIndex >= ctrl.items.length ? 0 : ctrl.activeIndex; + + // ensure that the index is set to zero for tagging variants + // that where first option is auto-selected + if ( ctrl.activeIndex === -1 && ctrl.taggingLabel !== false ) { + ctrl.activeIndex = 0; } - }; - ctrl.findGroupByName = function(name) { - return ctrl.groups && ctrl.groups.filter(function(group) { - return group.name === name; - })[0]; + // Give it time to appear before focus + $timeout(function() { + ctrl.search = initSearchValue || ctrl.search; + ctrl.searchInput[0].focus(); + }); + } + }; + + ctrl.findGroupByName = function(name) { + return ctrl.groups && ctrl.groups.filter(function(group) { + return group.name === name; + })[0]; + }; + + ctrl.parseRepeatAttr = function(repeatAttr, groupByExp) { + function updateGroups(items) { + ctrl.groups = []; + angular.forEach(items, function(item) { + var groupFn = $scope.$eval(groupByExp); + var groupName = angular.isFunction(groupFn) ? groupFn(item) : item[groupFn]; + var group = ctrl.findGroupByName(groupName); + if(group) { + group.items.push(item); + } + else { + ctrl.groups.push({name: groupName, items: [item]}); + } + }); + ctrl.items = []; + ctrl.groups.forEach(function(group) { + ctrl.items = ctrl.items.concat(group.items); + }); + } + + function setPlainItems(items) { + ctrl.items = items; + } + + ctrl.setItemsFn = groupByExp ? updateGroups : setPlainItems; + + ctrl.parserResult = RepeatParser.parse(repeatAttr); + + ctrl.isGrouped = !!groupByExp; + ctrl.itemProperty = ctrl.parserResult.itemName; + + ctrl.refreshItems = function (data){ + data = data || ctrl.parserResult.source($scope); + var selectedItems = ctrl.selected; + //TODO should implement for single mode removeSelected + if ((angular.isArray(selectedItems) && !selectedItems.length) || !ctrl.removeSelected) { + ctrl.setItemsFn(data); + }else{ + if ( data !== undefined ) { + var filteredItems = data.filter(function(i) {return selectedItems.indexOf(i) < 0;}); + ctrl.setItemsFn(filteredItems); + } + } }; - ctrl.parseRepeatAttr = function(repeatAttr, groupByExp) { - function updateGroups(items) { - ctrl.groups = []; - angular.forEach(items, function(item) { - var groupFn = $scope.$eval(groupByExp); - var groupName = angular.isFunction(groupFn) ? groupFn(item) : item[groupFn]; - var group = ctrl.findGroupByName(groupName); - if(group) { - group.items.push(item); - } - else { - ctrl.groups.push({name: groupName, items: [item]}); - } - }); + // See https://github.com/angular/angular.js/blob/v1.2.15/src/ng/directive/ngRepeat.js#L259 + $scope.$watchCollection(ctrl.parserResult.source, function(items) { + if (items === undefined || items === null) { + // If the user specifies undefined or null => reset the collection + // Special case: items can be undefined if the user did not initialized the collection on the scope + // i.e $scope.addresses = [] is missing ctrl.items = []; - ctrl.groups.forEach(function(group) { - ctrl.items = ctrl.items.concat(group.items); - }); + } else { + if (!angular.isArray(items)) { + throw uiSelectMinErr('items', "Expected an array but got '{0}'.", items); + } else { + //Remove already selected items (ex: while searching) + //TODO Should add a test + ctrl.refreshItems(items); + ctrl.ngModel.$modelValue = null; //Force scope model value and ngModel value to be out of sync to re-run formatters + } } + }); - function setPlainItems(items) { - ctrl.items = items; - } + }; - var setItemsFn = groupByExp ? updateGroups : setPlainItems; + var _refreshDelayPromise; - ctrl.parserResult = RepeatParser.parse(repeatAttr); + /** + * Typeahead mode: lets the user refresh the collection using his own function. + * + * See Expose $select.search for external / remote filtering https://github.com/angular-ui/ui-select/pull/31 + */ + ctrl.refresh = function(refreshAttr) { + if (refreshAttr !== undefined) { + + // Debounce + // See https://github.com/angular-ui/bootstrap/blob/0.10.0/src/typeahead/typeahead.js#L155 + // FYI AngularStrap typeahead does not have debouncing: https://github.com/mgcrea/angular-strap/blob/v2.0.0-rc.4/src/typeahead/typeahead.js#L177 + if (_refreshDelayPromise) { + $timeout.cancel(_refreshDelayPromise); + } + _refreshDelayPromise = $timeout(function() { + $scope.$eval(refreshAttr); + }, ctrl.refreshDelay); + } + }; - ctrl.isGrouped = !!groupByExp; - ctrl.itemProperty = ctrl.parserResult.itemName; + ctrl.setActiveItem = function(item) { + ctrl.activeIndex = ctrl.items.indexOf(item); + }; - // See https://github.com/angular/angular.js/blob/v1.2.15/src/ng/directive/ngRepeat.js#L259 - $scope.$watchCollection(ctrl.parserResult.source, function(items) { + ctrl.isActive = function(itemScope) { + if ( !ctrl.open ) { + return false; + } + var itemIndex = ctrl.items.indexOf(itemScope[ctrl.itemProperty]); + var isActive = itemIndex === ctrl.activeIndex; - if (items === undefined || items === null) { - // If the user specifies undefined or null => reset the collection - // Special case: items can be undefined if the user did not initialized the collection on the scope - // i.e $scope.addresses = [] is missing - ctrl.items = []; - } else { - if (!angular.isArray(items)) { - throw uiSelectMinErr('items', "Expected an array but got '{0}'.", items); - } else { - if (ctrl.multiple){ - //Remove already selected items (ex: while searching) - var filteredItems = items.filter(function(i) {return ctrl.selected.indexOf(i) < 0;}); - setItemsFn(filteredItems); - }else{ - setItemsFn(items); - } - ctrl.ngModel.$modelValue = null; //Force scope model value and ngModel value to be out of sync to re-run formatters + if ( !isActive || ( itemIndex < 0 && ctrl.taggingLabel !== false ) ||( itemIndex < 0 && ctrl.taggingLabel === false) ) { + return false; + } - } - } + if (isActive && !angular.isUndefined(ctrl.onHighlightCallback)) { + itemScope.$eval(ctrl.onHighlightCallback); + } - }); + return isActive; + }; - if (ctrl.multiple){ - //Remove already selected items - $scope.$watchCollection('$select.selected', function(selectedItems){ - var data = ctrl.parserResult.source($scope); - if (!selectedItems.length) { - setItemsFn(data); - }else{ - var filteredItems = data.filter(function(i) {return selectedItems.indexOf(i) < 0;}); - setItemsFn(filteredItems); - } - ctrl.sizeSearchInput(); - }); - } + ctrl.isDisabled = function(itemScope) { - }; + if (!ctrl.open) return; - var _refreshDelayPromise; - - /** - * Typeahead mode: lets the user refresh the collection using his own function. - * - * See Expose $select.search for external / remote filtering https://github.com/angular-ui/ui-select/pull/31 - */ - ctrl.refresh = function(refreshAttr) { - if (refreshAttr !== undefined) { - - // Debounce - // See https://github.com/angular-ui/bootstrap/blob/0.10.0/src/typeahead/typeahead.js#L155 - // FYI AngularStrap typeahead does not have debouncing: https://github.com/mgcrea/angular-strap/blob/v2.0.0-rc.4/src/typeahead/typeahead.js#L177 - if (_refreshDelayPromise) { - $timeout.cancel(_refreshDelayPromise); - } - _refreshDelayPromise = $timeout(function() { - $scope.$eval(refreshAttr); - }, ctrl.refreshDelay); - } - }; + var itemIndex = ctrl.items.indexOf(itemScope[ctrl.itemProperty]); + var isDisabled = false; + var item; - ctrl.setActiveItem = function(item) { - ctrl.activeIndex = ctrl.items.indexOf(item); - }; + if (itemIndex >= 0 && !angular.isUndefined(ctrl.disableChoiceExpression)) { + item = ctrl.items[itemIndex]; + isDisabled = !!(itemScope.$eval(ctrl.disableChoiceExpression)); // force the boolean value + item._uiSelectChoiceDisabled = isDisabled; // store this for later reference + } - ctrl.isActive = function(itemScope) { - return ctrl.open && ctrl.items.indexOf(itemScope[ctrl.itemProperty]) === ctrl.activeIndex; - }; + return isDisabled; + }; - ctrl.isDisabled = function(itemScope) { - - if (!ctrl.open) return; - var itemIndex = ctrl.items.indexOf(itemScope[ctrl.itemProperty]); - var isDisabled = false; - var item; + // When the user selects an item with ENTER or clicks the dropdown + ctrl.select = function(item, skipFocusser, $event) { + if (item === undefined || !item._uiSelectChoiceDisabled) { - if (itemIndex >= 0 && !angular.isUndefined(ctrl.disableChoiceExpression)) { - item = ctrl.items[itemIndex]; - isDisabled = !!(itemScope.$eval(ctrl.disableChoiceExpression)); // force the boolean value - item._uiSelectChoiceDisabled = isDisabled; // store this for later reference - } + if ( ! ctrl.items && ! ctrl.search ) return; - return isDisabled; - }; + if (!item || !item._uiSelectChoiceDisabled) { + if(ctrl.tagging.isActivated) { + // if taggingLabel is disabled, we pull from ctrl.search val + if ( ctrl.taggingLabel === false ) { + if ( ctrl.activeIndex < 0 ) { + item = ctrl.tagging.fct !== undefined ? ctrl.tagging.fct(ctrl.search) : ctrl.search; + if (!item || angular.equals( ctrl.items[0], item ) ) { + return; + } + } else { + // keyboard nav happened first, user selected from dropdown + item = ctrl.items[ctrl.activeIndex]; + } + } else { + // tagging always operates at index zero, taggingLabel === false pushes + // the ctrl.search value without having it injected + if ( ctrl.activeIndex === 0 ) { + // ctrl.tagging pushes items to ctrl.items, so we only have empty val + // for `item` if it is a detected duplicate + if ( item === undefined ) return; + + // create new item on the fly if we don't already have one; + // use tagging function if we have one + if ( ctrl.tagging.fct !== undefined && typeof item === 'string' ) { + item = ctrl.tagging.fct(ctrl.search); + if (!item) return; + // if item type is 'string', apply the tagging label + } else if ( typeof item === 'string' ) { + // trim the trailing space + item = item.replace(ctrl.taggingLabel,'').trim(); + } + } + } + // search ctrl.selected for dupes potentially caused by tagging and return early if found + if ( ctrl.selected && angular.isArray(ctrl.selected) && ctrl.selected.filter( function (selection) { return angular.equals(selection, item); }).length > 0 ) { + ctrl.close(skipFocusser); + return; + } + } - // When the user clicks on an item inside the dropdown - ctrl.select = function(item, skipFocusser) { + $scope.$broadcast('uis:select', item); - if (item === undefined || !item._uiSelectChoiceDisabled) { var locals = {}; locals[ctrl.parserResult.itemName] = item; - ctrl.onSelectCallback($scope, { + $timeout(function(){ + ctrl.onSelectCallback($scope, { $item: item, $model: ctrl.parserResult.modelMapper($scope, locals) + }); }); - if(ctrl.multiple){ - ctrl.selected.push(item); - ctrl.sizeSearchInput(); - } else { - ctrl.selected = item; + if (ctrl.closeOnSelect) { + ctrl.close(skipFocusser); + } + if ($event && $event.type === 'click') { + ctrl.clickTriggeredSelect = true; } - ctrl.close(skipFocusser); } - }; + } + }; - // Closes the dropdown - ctrl.close = function(skipFocusser) { - if (!ctrl.open) return; - _resetSearchInput(); - ctrl.open = false; - if (!ctrl.multiple){ - $timeout(function(){ - ctrl.focusser.prop('disabled', false); - if (!skipFocusser) ctrl.focusser[0].focus(); - },0,false); - } - }; + // Closes the dropdown + ctrl.close = function(skipFocusser) { + if (!ctrl.open) return; + if (ctrl.ngModel && ctrl.ngModel.$setTouched) ctrl.ngModel.$setTouched(); + _resetSearchInput(); + ctrl.open = false; - // Toggle dropdown - ctrl.toggle = function(e) { - if (ctrl.open) ctrl.close(); else ctrl.activate(); - e.preventDefault(); - e.stopPropagation(); - }; + $scope.$broadcast('uis:close', skipFocusser); - // Remove item from multiple select - ctrl.removeChoice = function(index){ - var removedChoice = ctrl.selected[index]; - var locals = {}; - locals[ctrl.parserResult.itemName] = removedChoice; + }; - ctrl.selected.splice(index, 1); - ctrl.activeMatchIndex = -1; - ctrl.sizeSearchInput(); + ctrl.setFocus = function(){ + if (!ctrl.focus) ctrl.focusInput[0].focus(); + }; - ctrl.onRemoveCallback($scope, { - $item: removedChoice, - $model: ctrl.parserResult.modelMapper($scope, locals) - }); - }; + ctrl.clear = function($event) { + ctrl.select(undefined); + $event.stopPropagation(); + ctrl.focusser[0].focus(); + }; - ctrl.getPlaceholder = function(){ - //Refactor single? - if(ctrl.multiple && ctrl.selected.length) return; - return ctrl.placeholder; - }; + // Toggle dropdown + ctrl.toggle = function(e) { + if (ctrl.open) { + ctrl.close(); + e.preventDefault(); + e.stopPropagation(); + } else { + ctrl.activate(); + } + }; - var containerSizeWatch; - ctrl.sizeSearchInput = function(){ - var input = _searchInput[0], - container = _searchInput.parent().parent()[0]; - _searchInput.css('width','10px'); - var calculate = function(){ - var newWidth = container.clientWidth - input.offsetLeft - 10; - if(newWidth < 50) newWidth = container.clientWidth; - _searchInput.css('width',newWidth+'px'); - }; - $timeout(function(){ //Give tags time to render correctly - if (container.clientWidth === 0 && !containerSizeWatch){ - containerSizeWatch = $scope.$watch(function(){ return container.clientWidth;}, function(newValue){ - if (newValue !== 0){ - calculate(); - containerSizeWatch(); - containerSizeWatch = null; - } - }); - }else if (!containerSizeWatch) { - calculate(); - } - }, 0, false); - }; + ctrl.isLocked = function(itemScope, itemIndex) { + var isLocked, item = ctrl.selected[itemIndex]; - function _handleDropDownSelection(key) { - var processed = true; - switch (key) { - case KEY.DOWN: - if (!ctrl.open && ctrl.multiple) ctrl.activate(false, true); //In case its the search input in 'multiple' mode - else if (ctrl.activeIndex < ctrl.items.length - 1) { ctrl.activeIndex++; } - break; - case KEY.UP: - if (!ctrl.open && ctrl.multiple) ctrl.activate(false, true); //In case its the search input in 'multiple' mode - else if (ctrl.activeIndex > 0) { ctrl.activeIndex--; } - break; - case KEY.TAB: - if (!ctrl.multiple || ctrl.open) ctrl.select(ctrl.items[ctrl.activeIndex], true); - break; - case KEY.ENTER: - if(ctrl.open){ - ctrl.select(ctrl.items[ctrl.activeIndex]); - } else { - ctrl.activate(false, true); //In case its the search input in 'multiple' mode - } - break; - case KEY.ESC: - ctrl.close(); - break; - default: - processed = false; + if (item && !angular.isUndefined(ctrl.lockChoiceExpression)) { + isLocked = !!(itemScope.$eval(ctrl.lockChoiceExpression)); // force the boolean value + item._uiSelectChoiceLocked = isLocked; // store this for later reference } - return processed; - } - // Handles selected options in "multiple" mode - function _handleMatchSelection(key){ - var caretPosition = _getCaretPosition(_searchInput[0]), - length = ctrl.selected.length, - // none = -1, - first = 0, - last = length-1, - curr = ctrl.activeMatchIndex, - next = ctrl.activeMatchIndex+1, - prev = ctrl.activeMatchIndex-1, - newIndex = curr; - - if(caretPosition > 0 || (ctrl.search.length && key == KEY.RIGHT)) return false; + return isLocked; + }; - ctrl.close(); + var sizeWatch = null; + ctrl.sizeSearchInput = function() { + + var input = ctrl.searchInput[0], + container = ctrl.searchInput.parent().parent()[0], + calculateContainerWidth = function() { + // Return the container width only if the search input is visible + return container.clientWidth * !!input.offsetParent; + }, + updateIfVisible = function(containerWidth) { + if (containerWidth === 0) { + return false; + } + var inputWidth = containerWidth - input.offsetLeft - 10; + if (inputWidth < 50) inputWidth = containerWidth; + ctrl.searchInput.css('width', inputWidth+'px'); + return true; + }; - function getNewActiveMatchIndex(){ - switch(key){ - case KEY.LEFT: - // Select previous/first item - if(~ctrl.activeMatchIndex) return prev; - // Select last item - else return last; - break; - case KEY.RIGHT: - // Open drop-down - if(!~ctrl.activeMatchIndex || curr === last){ - ctrl.activate(); - return false; - } - // Select next/last item - else return next; - break; - case KEY.BACKSPACE: - // Remove selected item and select previous/first - if(~ctrl.activeMatchIndex){ - ctrl.removeChoice(curr); - return prev; - } - // Select last item - else return last; - break; - case KEY.DELETE: - // Remove selected item and select next item - if(~ctrl.activeMatchIndex){ - ctrl.removeChoice(ctrl.activeMatchIndex); - return curr; - } - else return false; - } + ctrl.searchInput.css('width', '10px'); + $timeout(function() { //Give tags time to render correctly + if (sizeWatch === null && !updateIfVisible(calculateContainerWidth())) { + sizeWatch = $scope.$watch(calculateContainerWidth, function(containerWidth) { + if (updateIfVisible(containerWidth)) { + sizeWatch(); + sizeWatch = null; + } + }); } + }); + }; - newIndex = getNewActiveMatchIndex(); - - if(!ctrl.selected.length || newIndex === false) ctrl.activeMatchIndex = -1; - else ctrl.activeMatchIndex = Math.min(last,Math.max(first,newIndex)); - - return true; + function _handleDropDownSelection(key) { + var processed = true; + switch (key) { + case KEY.DOWN: + if (!ctrl.open && ctrl.multiple) ctrl.activate(false, true); //In case its the search input in 'multiple' mode + else if (ctrl.activeIndex < ctrl.items.length - 1) { ctrl.activeIndex++; } + break; + case KEY.UP: + if (!ctrl.open && ctrl.multiple) ctrl.activate(false, true); //In case its the search input in 'multiple' mode + else if (ctrl.activeIndex > 0 || (ctrl.search.length === 0 && ctrl.tagging.isActivated && ctrl.activeIndex > -1)) { ctrl.activeIndex--; } + break; + case KEY.TAB: + if (!ctrl.multiple || ctrl.open) ctrl.select(ctrl.items[ctrl.activeIndex], true); + break; + case KEY.ENTER: + if(ctrl.open && ctrl.activeIndex >= 0){ + ctrl.select(ctrl.items[ctrl.activeIndex]); // Make sure at least one dropdown item is highlighted before adding. + } else { + ctrl.activate(false, true); //In case its the search input in 'multiple' mode + } + break; + case KEY.ESC: + ctrl.close(); + break; + default: + processed = false; } + return processed; + } - // Bind to keyboard shortcuts - _searchInput.on('keydown', function(e) { + // Bind to keyboard shortcuts + ctrl.searchInput.on('keydown', function(e) { - var key = e.which; + var key = e.which; - // if(~[KEY.ESC,KEY.TAB].indexOf(key)){ - // //TODO: SEGURO? - // ctrl.close(); - // } + // if(~[KEY.ESC,KEY.TAB].indexOf(key)){ + // //TODO: SEGURO? + // ctrl.close(); + // } - $scope.$apply(function() { - var processed = false; + $scope.$apply(function() { - if(ctrl.multiple && KEY.isHorizontalMovement(key)){ - processed = _handleMatchSelection(key); - } + var tagged = false; - if (!processed && ctrl.items.length > 0) { - processed = _handleDropDownSelection(key); - } - - if (processed && key != KEY.TAB) { - //TODO Check si el tab selecciona aun correctamente - //Crear test - e.preventDefault(); - e.stopPropagation(); + if (ctrl.items.length > 0 || ctrl.tagging.isActivated) { + _handleDropDownSelection(key); + if ( ctrl.taggingTokens.isActivated ) { + for (var i = 0; i < ctrl.taggingTokens.tokens.length; i++) { + if ( ctrl.taggingTokens.tokens[i] === KEY.MAP[e.keyCode] ) { + // make sure there is a new value to push via tagging + if ( ctrl.search.length > 0 ) { + tagged = true; + } + } + } + if ( tagged ) { + $timeout(function() { + ctrl.searchInput.triggerHandler('tagged'); + var newItem = ctrl.search.replace(KEY.MAP[e.keyCode],'').trim(); + if ( ctrl.tagging.fct ) { + newItem = ctrl.tagging.fct( newItem ); + } + if (newItem) ctrl.select(newItem, true); + }); + } } - }); - - if(KEY.isVerticalMovement(key) && ctrl.items.length > 0){ - _ensureHighlightVisible(); } }); - _searchInput.on('blur', function() { - $timeout(function() { - ctrl.activeMatchIndex = -1; - }); - }); - - function _getCaretPosition(el) { - if(angular.isNumber(el.selectionStart)) return el.selectionStart; - // selectionStart is not supported in IE8 and we don't want hacky workarounds so we compromise - else return el.value.length; + if(KEY.isVerticalMovement(key) && ctrl.items.length > 0){ + _ensureHighlightVisible(); } - // See https://github.com/ivaynberg/select2/blob/3.4.6/select2.js#L1431 - function _ensureHighlightVisible() { - var container = $element.querySelectorAll('.ui-select-choices-content'); - var choices = container.querySelectorAll('.ui-select-choices-row'); - if (choices.length < 1) { - throw uiSelectMinErr('choices', "Expected multiple .ui-select-choices-row but got '{0}'.", choices.length); - } + }); - var highlighted = choices[ctrl.activeIndex]; - var posY = highlighted.offsetTop + highlighted.clientHeight - container[0].scrollTop; - var height = container[0].offsetHeight; - - if (posY > height) { - container[0].scrollTop += posY - height; - } else if (posY < highlighted.clientHeight) { - if (ctrl.isGrouped && ctrl.activeIndex === 0) - container[0].scrollTop = 0; //To make group header visible when going all the way up - else - container[0].scrollTop -= highlighted.clientHeight - posY; + // If tagging try to split by tokens and add items + ctrl.searchInput.on('paste', function (e) { + var data = e.originalEvent.clipboardData.getData('text/plain'); + if (data && data.length > 0 && ctrl.taggingTokens.isActivated && ctrl.tagging.fct) { + var items = data.split(ctrl.taggingTokens.tokens[0]); // split by first token only + if (items && items.length > 0) { + angular.forEach(items, function (item) { + var newItem = ctrl.tagging.fct(item); + if (newItem) { + ctrl.select(newItem, true); + } + }); + e.preventDefault(); + e.stopPropagation(); } } + }); - $scope.$on('$destroy', function() { - _searchInput.off('keydown blur'); + ctrl.searchInput.on('tagged', function() { + $timeout(function() { + _resetSearchInput(); }); - }]) + }); - .directive('uiSelect', - ['$document', 'uiSelectConfig', 'uiSelectMinErr', '$compile', '$parse', - function($document, uiSelectConfig, uiSelectMinErr, $compile, $parse) { + // See https://github.com/ivaynberg/select2/blob/3.4.6/select2.js#L1431 + function _ensureHighlightVisible() { + var container = $element.querySelectorAll('.ui-select-choices-content'); + var choices = container.querySelectorAll('.ui-select-choices-row'); + if (choices.length < 1) { + throw uiSelectMinErr('choices', "Expected multiple .ui-select-choices-row but got '{0}'.", choices.length); + } - return { - restrict: 'EA', - templateUrl: function(tElement, tAttrs) { - var theme = tAttrs.theme || uiSelectConfig.theme; - return theme + (angular.isDefined(tAttrs.multiple) ? '/select-multiple.tpl.html' : '/select.tpl.html'); - }, - replace: true, - transclude: true, - require: ['uiSelect', 'ngModel'], - scope: true, - - controller: 'uiSelectCtrl', - controllerAs: '$select', - - link: function(scope, element, attrs, ctrls, transcludeFn) { - var $select = ctrls[0]; - var ngModel = ctrls[1]; + if (ctrl.activeIndex < 0) { + return; + } - var searchInput = element.querySelectorAll('input.ui-select-search'); + var highlighted = choices[ctrl.activeIndex]; + var posY = highlighted.offsetTop + highlighted.clientHeight - container[0].scrollTop; + var height = container[0].offsetHeight; + + if (posY > height) { + container[0].scrollTop += posY - height; + } else if (posY < highlighted.clientHeight) { + if (ctrl.isGrouped && ctrl.activeIndex === 0) + container[0].scrollTop = 0; //To make group header visible when going all the way up + else + container[0].scrollTop -= highlighted.clientHeight - posY; + } + } - $select.multiple = (angular.isDefined(attrs.multiple)) ? (attrs.multiple === '') ? true : (attrs.multiple.toLowerCase() === 'true') : false; + $scope.$on('$destroy', function() { + ctrl.searchInput.off('keyup keydown tagged blur paste'); + }); - $select.onSelectCallback = $parse(attrs.onSelect); - $select.onRemoveCallback = $parse(attrs.onRemove); +}]); - //From view --> model - ngModel.$parsers.unshift(function (inputValue) { - var locals = {}, - result; - if ($select.multiple){ - var resultMultiple = []; - for (var j = $select.selected.length - 1; j >= 0; j--) { - locals = {}; - locals[$select.parserResult.itemName] = $select.selected[j]; - result = $select.parserResult.modelMapper(scope, locals); - resultMultiple.unshift(result); - } - return resultMultiple; - }else{ - locals = {}; - locals[$select.parserResult.itemName] = inputValue; - result = $select.parserResult.modelMapper(scope, locals); - return result; - } - }); +uis.directive('uiSelect', + ['$document', 'uiSelectConfig', 'uiSelectMinErr', 'uisOffset', '$compile', '$parse', '$timeout', + function($document, uiSelectConfig, uiSelectMinErr, uisOffset, $compile, $parse, $timeout) { - //From model --> view - ngModel.$formatters.unshift(function (inputValue) { - var data = $select.parserResult.source (scope, { $select : {search:''}}), //Overwrite $search - locals = {}, - result; - if (data){ - if ($select.multiple){ - var resultMultiple = []; - var checkFnMultiple = function(list, value){ - if (!list || !list.length) return; - for (var p = list.length - 1; p >= 0; p--) { - locals[$select.parserResult.itemName] = list[p]; - result = $select.parserResult.modelMapper(scope, locals); - if (result == value){ - resultMultiple.unshift(list[p]); - return true; - } - } - return false; - }; - if (!inputValue) return resultMultiple; //If ngModel was undefined - for (var k = inputValue.length - 1; k >= 0; k--) { - if (!checkFnMultiple($select.selected, inputValue[k])){ - checkFnMultiple(data, inputValue[k]); - } - } - return resultMultiple; - }else{ - var checkFnSingle = function(d){ - locals[$select.parserResult.itemName] = d; - result = $select.parserResult.modelMapper(scope, locals); - return result == inputValue; - }; - //If possible pass same object stored in $select.selected - if ($select.selected && checkFnSingle($select.selected)) { - return $select.selected; - } - for (var i = data.length - 1; i >= 0; i--) { - if (checkFnSingle(data[i])) return data[i]; - } - } + return { + restrict: 'EA', + templateUrl: function(tElement, tAttrs) { + var theme = tAttrs.theme || uiSelectConfig.theme; + return theme + (angular.isDefined(tAttrs.multiple) ? '/select-multiple.tpl.html' : '/select.tpl.html'); + }, + replace: true, + transclude: true, + require: ['uiSelect', '^ngModel'], + scope: true, + + controller: 'uiSelectCtrl', + controllerAs: '$select', + compile: function(tElement, tAttrs) { + + //Multiple or Single depending if multiple attribute presence + if (angular.isDefined(tAttrs.multiple)) + tElement.append("").removeAttr('multiple'); + else + tElement.append(""); + + return function(scope, element, attrs, ctrls, transcludeFn) { + + var $select = ctrls[0]; + var ngModel = ctrls[1]; + + $select.generatedId = uiSelectConfig.generateId(); + $select.baseTitle = attrs.title || 'Select box'; + $select.focusserTitle = $select.baseTitle + ' focus'; + $select.focusserId = 'focusser-' + $select.generatedId; + + $select.closeOnSelect = function() { + if (angular.isDefined(attrs.closeOnSelect)) { + return $parse(attrs.closeOnSelect)(); + } else { + return uiSelectConfig.closeOnSelect; } - return inputValue; - }); + }(); + $select.onSelectCallback = $parse(attrs.onSelect); + $select.onRemoveCallback = $parse(attrs.onRemove); + //Set reference to ngModel from uiSelectCtrl $select.ngModel = ngModel; - //Idea from: https://github.com/ivaynberg/select2/blob/79b5bf6db918d7560bdd959109b7bcfb47edaf43/select2.js#L1954 - var focusser = angular.element(""); + $select.choiceGrouped = function(group){ + return $select.isGrouped && group && group.name; + }; if(attrs.tabindex){ - //tabindex might be an expression, wait until it contains the actual value before we set the focusser tabindex attrs.$observe('tabindex', function(value) { - //If we are using multiple, add tabindex to the search input - if($select.multiple){ - searchInput.attr("tabindex", value); - } else { - focusser.attr("tabindex", value); - } - //Remove the tabindex on the parent so that it is not focusable + $select.focusInput.attr("tabindex", value); element.removeAttr("tabindex"); }); } - $compile(focusser)(scope); - $select.focusser = focusser; - - if (!$select.multiple){ + scope.$watch('searchEnabled', function() { + var searchEnabled = scope.$eval(attrs.searchEnabled); + $select.searchEnabled = searchEnabled !== undefined ? searchEnabled : uiSelectConfig.searchEnabled; + }); - element.append(focusser); - focusser.bind("focus", function(){ - scope.$evalAsync(function(){ - $select.focus = true; - }); - }); - focusser.bind("blur", function(){ - scope.$evalAsync(function(){ - $select.focus = false; - }); - }); - focusser.bind("keydown", function(e){ - - if (e.which === KEY.BACKSPACE) { - e.preventDefault(); - e.stopPropagation(); - $select.select(undefined); - scope.$apply(); - return; - } - - if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) || e.which === KEY.ESC) { - return; - } - - if (e.which == KEY.DOWN || e.which == KEY.UP || e.which == KEY.ENTER || e.which == KEY.SPACE){ - e.preventDefault(); - e.stopPropagation(); - $select.activate(); - } - - scope.$digest(); - }); - - focusser.bind("keyup input", function(e){ - - if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) || e.which === KEY.ESC || e.which == KEY.ENTER || e.which === KEY.BACKSPACE) { - return; - } - - $select.activate(focusser.val()); //User pressed some regular key, so we pass it to the search input - focusser.val(''); - scope.$digest(); - - }); - - } - - - scope.$watch('searchEnabled', function() { - var searchEnabled = scope.$eval(attrs.searchEnabled); - $select.searchEnabled = searchEnabled !== undefined ? searchEnabled : true; - }); + scope.$watch('sortable', function() { + var sortable = scope.$eval(attrs.sortable); + $select.sortable = sortable !== undefined ? sortable : uiSelectConfig.sortable; + }); attrs.$observe('disabled', function() { // No need to use $eval() (thanks to ng-disabled) since we already get a boolean instead of a string @@ -770,39 +810,60 @@ $select.resetSearchInput = resetSearchInput !== undefined ? resetSearchInput : true; }); - if ($select.multiple){ - scope.$watchCollection(function(){ return ngModel.$modelValue; }, function(newValue, oldValue) { - if (oldValue != newValue) - ngModel.$modelValue = null; //Force scope model value and ngModel value to be out of sync to re-run formatters - }); - scope.$watchCollection('$select.selected', function() { - ngModel.$setViewValue(Date.now()); //Set timestamp as a unique string to force changes - }); - focusser.prop('disabled', true); //Focusser isn't needed if multiple - }else{ - scope.$watch('$select.selected', function(newValue) { - if (ngModel.$viewValue !== newValue) { - ngModel.$setViewValue(newValue); + attrs.$observe('tagging', function() { + if(attrs.tagging !== undefined) + { + // $eval() is needed otherwise we get a string instead of a boolean + var taggingEval = scope.$eval(attrs.tagging); + $select.tagging = {isActivated: true, fct: taggingEval !== true ? taggingEval : undefined}; + } + else + { + $select.tagging = {isActivated: false, fct: undefined}; + } + }); + + attrs.$observe('taggingLabel', function() { + if(attrs.tagging !== undefined ) + { + // check eval for FALSE, in this case, we disable the labels + // associated with tagging + if ( attrs.taggingLabel === 'false' ) { + $select.taggingLabel = false; + } + else + { + $select.taggingLabel = attrs.taggingLabel !== undefined ? attrs.taggingLabel : '(new)'; } + } + }); + + attrs.$observe('taggingTokens', function() { + if (attrs.tagging !== undefined) { + var tokens = attrs.taggingTokens !== undefined ? attrs.taggingTokens.split('|') : [',','ENTER']; + $select.taggingTokens = {isActivated: true, tokens: tokens }; + } + }); + + //Automatically gets focus when loaded + if (angular.isDefined(attrs.autofocus)){ + $timeout(function(){ + $select.setFocus(); }); } - ngModel.$render = function() { - if($select.multiple){ - // Make sure that model value is array - if(!angular.isArray(ngModel.$viewValue)){ - // Have tolerance for null or undefined values - if(angular.isUndefined(ngModel.$viewValue) || ngModel.$viewValue === null){ - $select.selected = []; - } else { - throw uiSelectMinErr('multiarr', "Expected model value to be array but got '{0}'", ngModel.$viewValue); - } - } - } - $select.selected = ngModel.$viewValue; - }; + //Gets focus based on scope event name (e.g. focus-on='SomeEventName') + if (angular.isDefined(attrs.focusOn)){ + scope.$on(attrs.focusOn, function() { + $timeout(function(){ + $select.setFocus(); + }); + }); + } function onDocumentClick(e) { + if (!$select.open) return; //Skip it if dropdown is close + var contains = false; if (window.jQuery) { @@ -813,10 +874,16 @@ contains = element[0].contains(e.target); } - if (!contains) { - $select.close(); + if (!contains && !$select.clickTriggeredSelect) { + //Will lose focus only with certain targets + var focusableControls = ['input','button','textarea']; + var targetScope = angular.element(e.target).scope(); //To check if target is other ui-select + var skipFocusser = targetScope && targetScope.$select && targetScope.$select !== $select; //To check if target is other ui-select + if (!skipFocusser) skipFocusser = ~focusableControls.indexOf(e.target.tagName.toLowerCase()); //Check if target is input, button or textarea + $select.close(skipFocusser); scope.$digest(); } + $select.clickTriggeredSelect = false; } // See Click everywhere but here event http://stackoverflow.com/questions/12931369 @@ -837,6 +904,7 @@ var transcludedMatch = transcluded.querySelectorAll('.ui-select-match'); transcludedMatch.removeAttr('ui-select-match'); //To avoid loop in case directive as attr + transcludedMatch.removeAttr('data-ui-select-match'); // Properly handle HTML5 data-attributes if (transcludedMatch.length !== 1) { throw uiSelectMinErr('transcluded', "Expected 1 .ui-select-match but got '{0}'.", transcludedMatch.length); } @@ -844,141 +912,835 @@ var transcludedChoices = transcluded.querySelectorAll('.ui-select-choices'); transcludedChoices.removeAttr('ui-select-choices'); //To avoid loop in case directive as attr + transcludedChoices.removeAttr('data-ui-select-choices'); // Properly handle HTML5 data-attributes if (transcludedChoices.length !== 1) { throw uiSelectMinErr('transcluded', "Expected 1 .ui-select-choices but got '{0}'.", transcludedChoices.length); } element.querySelectorAll('.ui-select-choices').replaceWith(transcludedChoices); }); + + // Support for appending the select field to the body when its open + var appendToBody = scope.$eval(attrs.appendToBody); + if (appendToBody !== undefined ? appendToBody : uiSelectConfig.appendToBody) { + scope.$watch('$select.open', function(isOpen) { + if (isOpen) { + positionDropdown(); + } else { + resetDropdown(); + } + }); + + // Move the dropdown back to its original location when the scope is destroyed. Otherwise + // it might stick around when the user routes away or the select field is otherwise removed + scope.$on('$destroy', function() { + resetDropdown(); + }); + } + + // Hold on to a reference to the .ui-select-container element for appendToBody support + var placeholder = null, + originalWidth = ''; + + function positionDropdown() { + // Remember the absolute position of the element + var offset = uisOffset(element); + + // Clone the element into a placeholder element to take its original place in the DOM + placeholder = angular.element('
'); + placeholder[0].style.width = offset.width + 'px'; + placeholder[0].style.height = offset.height + 'px'; + element.after(placeholder); + + // Remember the original value of the element width inline style, so it can be restored + // when the dropdown is closed + originalWidth = element[0].style.width; + + // Now move the actual dropdown element to the end of the body + $document.find('body').append(element); + + element[0].style.position = 'absolute'; + element[0].style.left = offset.left + 'px'; + element[0].style.top = offset.top + 'px'; + element[0].style.width = offset.width + 'px'; + } + + function resetDropdown() { + if (placeholder === null) { + // The dropdown has not actually been display yet, so there's nothing to reset + return; + } + + // Move the dropdown element back to its original location in the DOM + placeholder.replaceWith(element); + placeholder = null; + + element[0].style.position = ''; + element[0].style.left = ''; + element[0].style.top = ''; + element[0].style.width = originalWidth; + } + }; + } + }; +}]); + +uis.directive('uiSelectMatch', ['uiSelectConfig', function(uiSelectConfig) { + return { + restrict: 'EA', + require: '^uiSelect', + replace: true, + transclude: true, + templateUrl: function(tElement) { + // Gets theme attribute from parent (ui-select) + var theme = tElement.parent().attr('theme') || uiSelectConfig.theme; + var multi = tElement.parent().attr('multiple'); + return theme + (multi ? '/match-multiple.tpl.html' : '/match.tpl.html'); + }, + link: function(scope, element, attrs, $select) { + $select.lockChoiceExpression = attrs.uiLockChoice; + attrs.$observe('placeholder', function(placeholder) { + $select.placeholder = placeholder !== undefined ? placeholder : uiSelectConfig.placeholder; + }); + + function setAllowClear(allow) { + $select.allowClear = (angular.isDefined(allow)) ? (allow === '') ? true : (allow.toLowerCase() === 'true') : false; } - }; - }]) - .directive('uiSelectChoices', - ['uiSelectConfig', 'RepeatParser', 'uiSelectMinErr', '$compile', - function(uiSelectConfig, RepeatParser, uiSelectMinErr, $compile) { + attrs.$observe('allowClear', setAllowClear); + setAllowClear(attrs.allowClear); - return { - restrict: 'EA', - require: '^uiSelect', - replace: true, - transclude: true, - templateUrl: function(tElement) { - // Gets theme attribute from parent (ui-select) - var theme = tElement.parent().attr('theme') || uiSelectConfig.theme; - return theme + '/choices.tpl.html'; - }, + if($select.multiple){ + $select.sizeSearchInput(); + } + + } + }; +}]); - compile: function(tElement, tAttrs) { +uis.directive('uiSelectMultiple', ['uiSelectMinErr','$timeout', function(uiSelectMinErr, $timeout) { + return { + restrict: 'EA', + require: ['^uiSelect', '^ngModel'], - if (!tAttrs.repeat) throw uiSelectMinErr('repeat', "Expected 'repeat' expression."); + controller: ['$scope','$timeout', function($scope, $timeout){ - return function link(scope, element, attrs, $select, transcludeFn) { - - // var repeat = RepeatParser.parse(attrs.repeat); - var groupByExp = attrs.groupBy; + var ctrl = this, + $select = $scope.$select, + ngModel; - $select.parseRepeatAttr(attrs.repeat, groupByExp); //Result ready at $select.parserResult + //Wait for link fn to inject it + $scope.$evalAsync(function(){ ngModel = $scope.ngModel; }); - $select.disableChoiceExpression = attrs.uiDisableChoice; + ctrl.activeMatchIndex = -1; + + ctrl.updateModel = function(){ + ngModel.$setViewValue(Date.now()); //Set timestamp as a unique string to force changes + ctrl.refreshComponent(); + }; + + ctrl.refreshComponent = function(){ + //Remove already selected items + //e.g. When user clicks on a selection, the selected array changes and + //the dropdown should remove that item + $select.refreshItems(); + $select.sizeSearchInput(); + }; + + // Remove item from multiple select + ctrl.removeChoice = function(index){ + + var removedChoice = $select.selected[index]; + + // if the choice is locked, can't remove it + if(removedChoice._uiSelectChoiceLocked) return; + + var locals = {}; + locals[$select.parserResult.itemName] = removedChoice; + + $select.selected.splice(index, 1); + ctrl.activeMatchIndex = -1; + $select.sizeSearchInput(); + + // Give some time for scope propagation. + $timeout(function(){ + $select.onRemoveCallback($scope, { + $item: removedChoice, + $model: $select.parserResult.modelMapper($scope, locals) + }); + }); + + ctrl.updateModel(); + + }; - if(groupByExp) { - var groups = element.querySelectorAll('.ui-select-choices-group'); - if (groups.length !== 1) throw uiSelectMinErr('rows', "Expected 1 .ui-select-choices-group but got '{0}'.", groups.length); - groups.attr('ng-repeat', RepeatParser.getGroupNgRepeatExpression()); + ctrl.getPlaceholder = function(){ + //Refactor single? + if($select.selected.length) return; + return $select.placeholder; + }; + + + }], + controllerAs: '$selectMultiple', + + link: function(scope, element, attrs, ctrls) { + + var $select = ctrls[0]; + var ngModel = scope.ngModel = ctrls[1]; + var $selectMultiple = scope.$selectMultiple; + + //$select.selected = raw selected objects (ignoring any property binding) + + $select.multiple = true; + $select.removeSelected = true; + + //Input that will handle focus + $select.focusInput = $select.searchInput; + + //From view --> model + ngModel.$parsers.unshift(function () { + var locals = {}, + result, + resultMultiple = []; + for (var j = $select.selected.length - 1; j >= 0; j--) { + locals = {}; + locals[$select.parserResult.itemName] = $select.selected[j]; + result = $select.parserResult.modelMapper(scope, locals); + resultMultiple.unshift(result); + } + return resultMultiple; + }); + + // From model --> view + ngModel.$formatters.unshift(function (inputValue) { + var data = $select.parserResult.source (scope, { $select : {search:''}}), //Overwrite $search + locals = {}, + result; + if (!data) return inputValue; + var resultMultiple = []; + var checkFnMultiple = function(list, value){ + if (!list || !list.length) return; + for (var p = list.length - 1; p >= 0; p--) { + locals[$select.parserResult.itemName] = list[p]; + result = $select.parserResult.modelMapper(scope, locals); + if($select.parserResult.trackByExp){ + var matches = /\.(.+)/.exec($select.parserResult.trackByExp); + if(matches.length>0 && result[matches[1]] == value[matches[1]]){ + resultMultiple.unshift(list[p]); + return true; + } + } + if (angular.equals(result,value)){ + resultMultiple.unshift(list[p]); + return true; + } } + return false; + }; + if (!inputValue) return resultMultiple; //If ngModel was undefined + for (var k = inputValue.length - 1; k >= 0; k--) { + //Check model array of currently selected items + if (!checkFnMultiple($select.selected, inputValue[k])){ + //Check model array of all items available + if (!checkFnMultiple(data, inputValue[k])){ + //If not found on previous lists, just add it directly to resultMultiple + resultMultiple.unshift(inputValue[k]); + } + } + } + return resultMultiple; + }); + + //Watch for external model changes + scope.$watchCollection(function(){ return ngModel.$modelValue; }, function(newValue, oldValue) { + if (oldValue != newValue){ + ngModel.$modelValue = null; //Force scope model value and ngModel value to be out of sync to re-run formatters + $selectMultiple.refreshComponent(); + } + }); - var choices = element.querySelectorAll('.ui-select-choices-row'); - if (choices.length !== 1) { - throw uiSelectMinErr('rows', "Expected 1 .ui-select-choices-row but got '{0}'.", choices.length); + ngModel.$render = function() { + // Make sure that model value is array + if(!angular.isArray(ngModel.$viewValue)){ + // Have tolerance for null or undefined values + if(angular.isUndefined(ngModel.$viewValue) || ngModel.$viewValue === null){ + $select.selected = []; + } else { + throw uiSelectMinErr('multiarr', "Expected model value to be array but got '{0}'", ngModel.$viewValue); } + } + $select.selected = ngModel.$viewValue; + scope.$evalAsync(); //To force $digest + }; - choices.attr('ng-repeat', RepeatParser.getNgRepeatExpression($select.parserResult.itemName, '$select.items', $select.parserResult.trackByExp, groupByExp)) - .attr('ng-mouseenter', '$select.setActiveItem('+$select.parserResult.itemName +')') - .attr('ng-click', '$select.select(' + $select.parserResult.itemName + ')'); + scope.$on('uis:select', function (event, item) { + $select.selected.push(item); + $selectMultiple.updateModel(); + }); - var rowsInner = element.querySelectorAll('.ui-select-choices-row-inner'); - if (rowsInner.length !== 1) throw uiSelectMinErr('rows', "Expected 1 .ui-select-choices-row-inner but got '{0}'.", rowsInner.length); - rowsInner.attr('uis-transclude-append', ''); //Adding uisTranscludeAppend directive to row element after choices element has ngRepeat + scope.$on('uis:activate', function () { + $selectMultiple.activeMatchIndex = -1; + }); - $compile(element, transcludeFn)(scope); //Passing current transcludeFn to be able to append elements correctly from uisTranscludeAppend + scope.$watch('$select.disabled', function(newValue, oldValue) { + // As the search input field may now become visible, it may be necessary to recompute its size + if (oldValue && !newValue) $select.sizeSearchInput(); + }); - scope.$watch('$select.search', function(newValue) { - if(newValue && !$select.open && $select.multiple) $select.activate(false, true); - $select.activeIndex = 0; - $select.refresh(attrs.refresh); + $select.searchInput.on('keydown', function(e) { + var key = e.which; + scope.$apply(function() { + var processed = false; + // var tagged = false; //Checkme + if(KEY.isHorizontalMovement(key)){ + processed = _handleMatchSelection(key); + } + if (processed && key != KEY.TAB) { + //TODO Check si el tab selecciona aun correctamente + //Crear test + e.preventDefault(); + e.stopPropagation(); + } + }); + }); + function _getCaretPosition(el) { + if(angular.isNumber(el.selectionStart)) return el.selectionStart; + // selectionStart is not supported in IE8 and we don't want hacky workarounds so we compromise + else return el.value.length; + } + // Handles selected options in "multiple" mode + function _handleMatchSelection(key){ + var caretPosition = _getCaretPosition($select.searchInput[0]), + length = $select.selected.length, + // none = -1, + first = 0, + last = length-1, + curr = $selectMultiple.activeMatchIndex, + next = $selectMultiple.activeMatchIndex+1, + prev = $selectMultiple.activeMatchIndex-1, + newIndex = curr; + + if(caretPosition > 0 || ($select.search.length && key == KEY.RIGHT)) return false; + + $select.close(); + + function getNewActiveMatchIndex(){ + switch(key){ + case KEY.LEFT: + // Select previous/first item + if(~$selectMultiple.activeMatchIndex) return prev; + // Select last item + else return last; + break; + case KEY.RIGHT: + // Open drop-down + if(!~$selectMultiple.activeMatchIndex || curr === last){ + $select.activate(); + return false; + } + // Select next/last item + else return next; + break; + case KEY.BACKSPACE: + // Remove selected item and select previous/first + if(~$selectMultiple.activeMatchIndex){ + $selectMultiple.removeChoice(curr); + return prev; + } + // Select last item + else return last; + break; + case KEY.DELETE: + // Remove selected item and select next item + if(~$selectMultiple.activeMatchIndex){ + $selectMultiple.removeChoice($selectMultiple.activeMatchIndex); + return curr; + } + else return false; + } + } + + newIndex = getNewActiveMatchIndex(); + + if(!$select.selected.length || newIndex === false) $selectMultiple.activeMatchIndex = -1; + else $selectMultiple.activeMatchIndex = Math.min(last,Math.max(first,newIndex)); + + return true; + } + + $select.searchInput.on('keyup', function(e) { + + if ( ! KEY.isVerticalMovement(e.which) ) { + scope.$evalAsync( function () { + $select.activeIndex = $select.taggingLabel === false ? -1 : 0; }); + } + // Push a "create new" item into array if there is a search string + if ( $select.tagging.isActivated && $select.search.length > 0 ) { - attrs.$observe('refreshDelay', function() { - // $eval() is needed otherwise we get a string instead of a number - var refreshDelay = scope.$eval(attrs.refreshDelay); - $select.refreshDelay = refreshDelay !== undefined ? refreshDelay : uiSelectConfig.refreshDelay; + // return early with these keys + if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) || e.which === KEY.ESC || KEY.isVerticalMovement(e.which) ) { + return; + } + // always reset the activeIndex to the first item when tagging + $select.activeIndex = $select.taggingLabel === false ? -1 : 0; + // taggingLabel === false bypasses all of this + if ($select.taggingLabel === false) return; + + var items = angular.copy( $select.items ); + var stashArr = angular.copy( $select.items ); + var newItem; + var item; + var hasTag = false; + var dupeIndex = -1; + var tagItems; + var tagItem; + + // case for object tagging via transform `$select.tagging.fct` function + if ( $select.tagging.fct !== undefined) { + tagItems = $select.$filter('filter')(items,{'isTag': true}); + if ( tagItems.length > 0 ) { + tagItem = tagItems[0]; + } + // remove the first element, if it has the `isTag` prop we generate a new one with each keyup, shaving the previous + if ( items.length > 0 && tagItem ) { + hasTag = true; + items = items.slice(1,items.length); + stashArr = stashArr.slice(1,stashArr.length); + } + newItem = $select.tagging.fct($select.search); + newItem.isTag = true; + // verify the the tag doesn't match the value of an existing item + if ( stashArr.filter( function (origItem) { return angular.equals( origItem, $select.tagging.fct($select.search) ); } ).length > 0 ) { + return; + } + newItem.isTag = true; + // handle newItem string and stripping dupes in tagging string context + } else { + // find any tagging items already in the $select.items array and store them + tagItems = $select.$filter('filter')(items,function (item) { + return item.match($select.taggingLabel); + }); + if ( tagItems.length > 0 ) { + tagItem = tagItems[0]; + } + item = items[0]; + // remove existing tag item if found (should only ever be one tag item) + if ( item !== undefined && items.length > 0 && tagItem ) { + hasTag = true; + items = items.slice(1,items.length); + stashArr = stashArr.slice(1,stashArr.length); + } + newItem = $select.search+' '+$select.taggingLabel; + if ( _findApproxDupe($select.selected, $select.search) > -1 ) { + return; + } + // verify the the tag doesn't match the value of an existing item from + // the searched data set or the items already selected + if ( _findCaseInsensitiveDupe(stashArr.concat($select.selected)) ) { + // if there is a tag from prev iteration, strip it / queue the change + // and return early + if ( hasTag ) { + items = stashArr; + scope.$evalAsync( function () { + $select.activeIndex = 0; + $select.items = items; + }); + } + return; + } + if ( _findCaseInsensitiveDupe(stashArr) ) { + // if there is a tag from prev iteration, strip it + if ( hasTag ) { + $select.items = stashArr.slice(1,stashArr.length); + } + return; + } + } + if ( hasTag ) dupeIndex = _findApproxDupe($select.selected, newItem); + // dupe found, shave the first item + if ( dupeIndex > -1 ) { + items = items.slice(dupeIndex+1,items.length-1); + } else { + items = []; + items.push(newItem); + items = items.concat(stashArr); + } + scope.$evalAsync( function () { + $select.activeIndex = 0; + $select.items = items; }); - }; + } + }); + function _findCaseInsensitiveDupe(arr) { + if ( arr === undefined || $select.search === undefined ) { + return false; + } + var hasDupe = arr.filter( function (origItem) { + if ( $select.search.toUpperCase() === undefined || origItem === undefined ) { + return false; + } + return origItem.toUpperCase() === $select.search.toUpperCase(); + }).length > 0; + + return hasDupe; } - }; - }]) - // Recreates old behavior of ng-transclude. Used internally. - .directive('uisTranscludeAppend', function () { - return { - link: function (scope, element, attrs, ctrl, transclude) { - transclude(scope, function (clone) { - element.append(clone); - }); + function _findApproxDupe(haystack, needle) { + var dupeIndex = -1; + if(angular.isArray(haystack)) { + var tempArr = angular.copy(haystack); + for (var i = 0; i model + ngModel.$parsers.unshift(function (inputValue) { + var locals = {}, + result; + locals[$select.parserResult.itemName] = inputValue; + result = $select.parserResult.modelMapper(scope, locals); + return result; + }); + + //From model --> view + ngModel.$formatters.unshift(function (inputValue) { + var data = $select.parserResult.source (scope, { $select : {search:''}}), //Overwrite $search + locals = {}, + result; + if (data){ + var checkFnSingle = function(d){ + locals[$select.parserResult.itemName] = d; + result = $select.parserResult.modelMapper(scope, locals); + return result == inputValue; + }; + //If possible pass same object stored in $select.selected + if ($select.selected && checkFnSingle($select.selected)) { + return $select.selected; + } + for (var i = data.length - 1; i >= 0; i--) { + if (checkFnSingle(data[i])) return data[i]; + } + } + return inputValue; + }); + + //Update viewValue if model change + scope.$watch('$select.selected', function(newValue) { + if (ngModel.$viewValue !== newValue) { + ngModel.$setViewValue(newValue); + } + }); + + ngModel.$render = function() { + $select.selected = ngModel.$viewValue; }; - }) - .directive('uiSelectMatch', ['uiSelectConfig', function(uiSelectConfig) { - return { - restrict: 'EA', - require: '^uiSelect', - replace: true, - transclude: true, - templateUrl: function(tElement) { - // Gets theme attribute from parent (ui-select) - var theme = tElement.parent().attr('theme') || uiSelectConfig.theme; - var multi = tElement.parent().attr('multiple'); - return theme + (multi ? '/match-multiple.tpl.html' : '/match.tpl.html'); - }, - link: function(scope, element, attrs, $select) { - attrs.$observe('placeholder', function(placeholder) { - $select.placeholder = placeholder !== undefined ? placeholder : uiSelectConfig.placeholder; + + scope.$on('uis:select', function (event, item) { + $select.selected = item; + }); + + scope.$on('uis:close', function (event, skipFocusser) { + $timeout(function(){ + $select.focusser.prop('disabled', false); + if (!skipFocusser) $select.focusser[0].focus(); + },0,false); + }); + + scope.$on('uis:activate', function () { + focusser.prop('disabled', true); //Will reactivate it on .close() + }); + + //Idea from: https://github.com/ivaynberg/select2/blob/79b5bf6db918d7560bdd959109b7bcfb47edaf43/select2.js#L1954 + var focusser = angular.element(""); + $compile(focusser)(scope); + $select.focusser = focusser; + + //Input that will handle focus + $select.focusInput = focusser; + + element.parent().append(focusser); + focusser.bind("focus", function(){ + scope.$evalAsync(function(){ + $select.focus = true; }); + }); + focusser.bind("blur", function(){ + scope.$evalAsync(function(){ + $select.focus = false; + }); + }); + focusser.bind("keydown", function(e){ + + if (e.which === KEY.BACKSPACE) { + e.preventDefault(); + e.stopPropagation(); + $select.select(undefined); + scope.$apply(); + return; + } - if($select.multiple){ - $select.sizeSearchInput(); + if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) || e.which === KEY.ESC) { + return; } + if (e.which == KEY.DOWN || e.which == KEY.UP || e.which == KEY.ENTER || e.which == KEY.SPACE){ + e.preventDefault(); + e.stopPropagation(); + $select.activate(); + } + + scope.$digest(); + }); + + focusser.bind("keyup input", function(e){ + + if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) || e.which === KEY.ESC || e.which == KEY.ENTER || e.which === KEY.BACKSPACE) { + return; + } + + $select.activate(focusser.val()); //User pressed some regular key, so we pass it to the search input + focusser.val(''); + scope.$digest(); + + }); + + + } + }; +}]); +// Make multiple matches sortable +uis.directive('uiSelectSort', ['$timeout', 'uiSelectConfig', 'uiSelectMinErr', function($timeout, uiSelectConfig, uiSelectMinErr) { + return { + require: '^uiSelect', + link: function(scope, element, attrs, $select) { + if (scope[attrs.uiSelectSort] === null) { + throw uiSelectMinErr('sort', "Expected a list to sort"); } - }; - }]) + + var options = angular.extend({ + axis: 'horizontal' + }, + scope.$eval(attrs.uiSelectSortOptions)); + + var axis = options.axis, + draggingClassName = 'dragging', + droppingClassName = 'dropping', + droppingBeforeClassName = 'dropping-before', + droppingAfterClassName = 'dropping-after'; + + scope.$watch(function(){ + return $select.sortable; + }, function(n){ + if (n) { + element.attr('draggable', true); + } else { + element.removeAttr('draggable'); + } + }); + + element.on('dragstart', function(e) { + element.addClass(draggingClassName); + + (e.dataTransfer || e.originalEvent.dataTransfer).setData('text/plain', scope.$index); + }); + + element.on('dragend', function() { + element.removeClass(draggingClassName); + }); + + var move = function(from, to) { + /*jshint validthis: true */ + this.splice(to, 0, this.splice(from, 1)[0]); + }; + + var dragOverHandler = function(e) { + e.preventDefault(); + + var offset = axis === 'vertical' ? e.offsetY || e.layerY || (e.originalEvent ? e.originalEvent.offsetY : 0) : e.offsetX || e.layerX || (e.originalEvent ? e.originalEvent.offsetX : 0); + + if (offset < (this[axis === 'vertical' ? 'offsetHeight' : 'offsetWidth'] / 2)) { + element.removeClass(droppingAfterClassName); + element.addClass(droppingBeforeClassName); + + } else { + element.removeClass(droppingBeforeClassName); + element.addClass(droppingAfterClassName); + } + }; + + var dropTimeout; + + var dropHandler = function(e) { + e.preventDefault(); + + var droppedItemIndex = parseInt((e.dataTransfer || e.originalEvent.dataTransfer).getData('text/plain'), 10); + + // prevent event firing multiple times in firefox + $timeout.cancel(dropTimeout); + dropTimeout = $timeout(function() { + _dropHandler(droppedItemIndex); + }, 20); + }; + + var _dropHandler = function(droppedItemIndex) { + var theList = scope.$eval(attrs.uiSelectSort), + itemToMove = theList[droppedItemIndex], + newIndex = null; + + if (element.hasClass(droppingBeforeClassName)) { + if (droppedItemIndex < scope.$index) { + newIndex = scope.$index - 1; + } else { + newIndex = scope.$index; + } + } else { + if (droppedItemIndex < scope.$index) { + newIndex = scope.$index; + } else { + newIndex = scope.$index + 1; + } + } + + move.apply(theList, [droppedItemIndex, newIndex]); + + scope.$apply(function() { + scope.$emit('uiSelectSort:change', { + array: theList, + item: itemToMove, + from: droppedItemIndex, + to: newIndex + }); + }); + + element.removeClass(droppingClassName); + element.removeClass(droppingBeforeClassName); + element.removeClass(droppingAfterClassName); + + element.off('drop', dropHandler); + }; + + element.on('dragenter', function() { + if (element.hasClass(draggingClassName)) { + return; + } + + element.addClass(droppingClassName); + + element.on('dragover', dragOverHandler); + element.on('drop', dropHandler); + }); + + element.on('dragleave', function(e) { + if (e.target != element) { + return; + } + element.removeClass(droppingClassName); + element.removeClass(droppingBeforeClassName); + element.removeClass(droppingAfterClassName); + + element.off('dragover', dragOverHandler); + element.off('drop', dropHandler); + }); + } + }; +}]); + +/** + * Parses "repeat" attribute. + * + * Taken from AngularJS ngRepeat source code + * See https://github.com/angular/angular.js/blob/v1.2.15/src/ng/directive/ngRepeat.js#L211 + * + * Original discussion about parsing "repeat" attribute instead of fully relying on ng-repeat: + * https://github.com/angular-ui/ui-select/commit/5dd63ad#commitcomment-5504697 + */ + +uis.service('uisRepeatParser', ['uiSelectMinErr','$parse', function(uiSelectMinErr, $parse) { + var self = this; /** - * Highlights text that matches $select.search. - * - * Taken from AngularUI Bootstrap Typeahead - * See https://github.com/angular-ui/bootstrap/blob/0.10.0/src/typeahead/typeahead.js#L340 + * Example: + * expression = "address in addresses | filter: {street: $select.search} track by $index" + * itemName = "address", + * source = "addresses | filter: {street: $select.search}", + * trackByExp = "$index", */ - .filter('highlight', function() { - function escapeRegexp(queryToEscape) { - return queryToEscape.replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1'); + self.parse = function(expression) { + + var match = expression.match(/^\s*(?:([\s\S]+?)\s+as\s+)?([\S]+?)\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?\s*$/); + + if (!match) { + throw uiSelectMinErr('iexp', "Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.", + expression); } - return function(matchItem, query) { - return query && matchItem ? matchItem.replace(new RegExp(escapeRegexp(query), 'gi'), '$&') : matchItem; + return { + itemName: match[2], // (lhs) Left-hand side, + source: $parse(match[3]), + trackByExp: match[4], + modelMapper: $parse(match[1] || match[2]) }; - }); -}()); -angular.module("ui.select").run(["$templateCache", function($templateCache) {$templateCache.put("bootstrap/choices.tpl.html","
    0\">
  • 0\">
    {{$group.name}}
"); -$templateCache.put("bootstrap/match-multiple.tpl.html"," × "); -$templateCache.put("bootstrap/match.tpl.html",""); -$templateCache.put("bootstrap/select-multiple.tpl.html","
"); -$templateCache.put("bootstrap/select.tpl.html","
"); -$templateCache.put("select2/choices.tpl.html","
  • {{$group.name}}
"); -$templateCache.put("select2/match-multiple.tpl.html","
  • "); -$templateCache.put("select2/match.tpl.html","{{$select.placeholder}} "); -$templateCache.put("select2/select-multiple.tpl.html","
    "); -$templateCache.put("select2/select.tpl.html","
    "); -$templateCache.put("selectize/choices.tpl.html","
    {{$group.name}}
    "); -$templateCache.put("selectize/match.tpl.html","
    "); -$templateCache.put("selectize/select.tpl.html","
    ");}]); \ No newline at end of file + }; + + self.getGroupNgRepeatExpression = function() { + return '$group in $select.groups'; + }; + + self.getNgRepeatExpression = function(itemName, source, trackByExp, grouped) { + var expression = itemName + ' in ' + (grouped ? '$group.items' : source); + if (trackByExp) { + expression += ' track by ' + trackByExp; + } + return expression; + }; +}]); + +}()); +angular.module("ui.select").run(["$templateCache", function($templateCache) {$templateCache.put("bootstrap/choices.tpl.html","
      0\">
    • 0\">
    "); +$templateCache.put("bootstrap/match-multiple.tpl.html"," × "); +$templateCache.put("bootstrap/match.tpl.html","
    {{$select.placeholder}}
    "); +$templateCache.put("bootstrap/select-multiple.tpl.html","
    "); +$templateCache.put("bootstrap/select.tpl.html","
    "); +$templateCache.put("select2/choices.tpl.html","
    "); +$templateCache.put("select2/match-multiple.tpl.html","
  • "); +$templateCache.put("select2/match.tpl.html","{{$select.placeholder}} "); +$templateCache.put("select2/select-multiple.tpl.html","
    "); +$templateCache.put("select2/select.tpl.html","
    "); +$templateCache.put("selectize/choices.tpl.html","
    "); +$templateCache.put("selectize/match.tpl.html","
    "); +$templateCache.put("selectize/select.tpl.html","
    ");}]); \ No newline at end of file diff --git a/data-mgmt/src/main/webapp/bower_components/angular-ui-select/dist/select.min.css b/data-mgmt/src/main/webapp/bower_components/angular-ui-select/dist/select.min.css index cdb6a4f..0e46047 100644 --- a/data-mgmt/src/main/webapp/bower_components/angular-ui-select/dist/select.min.css +++ b/data-mgmt/src/main/webapp/bower_components/angular-ui-select/dist/select.min.css @@ -1,6 +1,6 @@ /*! * ui-select * http://github.com/angular-ui/ui-select - * Version: 0.8.3 - 2014-10-14T18:22:05.435Z + * Version: 0.11.2 - 2015-03-17T04:08:46.478Z * License: MIT - */.ui-select-highlight{font-weight:700}.ui-select-offscreen{clip:rect(0 0 0 0)!important;width:1px!important;height:1px!important;border:0!important;margin:0!important;padding:0!important;overflow:hidden!important;position:absolute!important;outline:0!important;left:0!important;top:0!important}.ng-dirty.ng-invalid>a.select2-choice{border-color:#D44950}.select2-result-single{padding-left:0}.selectize-input.selectize-focus{border-color:#007FBB!important}.selectize-control>.selectize-dropdown,.selectize-control>.selectize-input>input{width:100%}.ng-dirty.ng-invalid>div.selectize-input{border-color:#D44950}.btn-default-focus{color:#333;background-color:#EBEBEB;border-color:#ADADAD;text-decoration:none;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.input-group>.ui-select-bootstrap.dropdown{position:static}.input-group>.ui-select-bootstrap>input.ui-select-search.form-control{border-radius:4px 0 0 4px}.ui-select-bootstrap>.ui-select-match{text-align:left}.ui-select-bootstrap>.ui-select-match>.caret{position:absolute;top:45%;right:15px}.ui-select-bootstrap>.ui-select-choices{width:100%;height:auto;max-height:200px;overflow-x:hidden}.ui-select-multiple.ui-select-bootstrap{height:auto;padding:.3em}.ui-select-multiple.ui-select-bootstrap input.ui-select-search{background-color:transparent!important;border:none;outline:0;height:1.666666em}.ui-select-multiple.ui-select-bootstrap .ui-select-match .close{font-size:1.6em;line-height:.75}.ui-select-multiple.ui-select-bootstrap .ui-select-match-item{outline:0}.ui-select-bootstrap .ui-select-choices-row>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.ui-select-bootstrap .ui-select-choices-row>a:focus,.ui-select-bootstrap .ui-select-choices-row>a:hover{text-decoration:none;color:#262626;background-color:#f5f5f5}.ui-select-bootstrap .ui-select-choices-row.active>a{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.ui-select-bootstrap .ui-select-choices-row.active.disabled>a,.ui-select-bootstrap .ui-select-choices-row.disabled>a{color:#777;cursor:not-allowed;background-color:#fff}.ui-select-match.ng-hide-add,.ui-select-search.ng-hide-add{display:none!important}.ui-select-bootstrap.ng-dirty.ng-invalid>button.btn.ui-select-match{border-color:#D44950} \ No newline at end of file + */.ui-select-highlight{font-weight:700}.ui-select-offscreen{clip:rect(0 0 0 0)!important;width:1px!important;height:1px!important;border:0!important;margin:0!important;padding:0!important;overflow:hidden!important;position:absolute!important;outline:0!important;left:0!important;top:0!important}.ng-dirty.ng-invalid>a.select2-choice{border-color:#D44950}.select2-result-single{padding-left:0}.select-locked>.ui-select-match-close,.select2-locked>.select2-search-choice-close{display:none}body>.select2-container.open{z-index:9999}.selectize-input.selectize-focus{border-color:#007FBB!important}.selectize-control>.selectize-dropdown,.selectize-control>.selectize-input>input{width:100%}.ng-dirty.ng-invalid>div.selectize-input{border-color:#D44950}.btn-default-focus{color:#333;background-color:#EBEBEB;border-color:#ADADAD;text-decoration:none;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.ui-select-bootstrap .ui-select-toggle{position:relative}.ui-select-bootstrap .ui-select-toggle>.caret{position:absolute;height:10px;top:50%;right:10px;margin-top:-2px}.input-group>.ui-select-bootstrap.dropdown{position:static}.input-group>.ui-select-bootstrap>input.ui-select-search.form-control{border-radius:4px 0 0 4px}.ui-select-bootstrap>.ui-select-match>.btn{text-align:left!important}.ui-select-bootstrap>.ui-select-match>.caret{position:absolute;top:45%;right:15px}.ui-select-bootstrap>.ui-select-choices{width:100%;height:auto;max-height:200px;overflow-x:hidden;margin-top:-1px}body>.ui-select-bootstrap.open{z-index:1000}.ui-select-multiple.ui-select-bootstrap{height:auto;padding:3px 3px 0}.ui-select-multiple.ui-select-bootstrap input.ui-select-search{background-color:transparent!important;border:none;outline:0;height:1.666666em;margin-bottom:3px}.ui-select-multiple.ui-select-bootstrap .ui-select-match .close{font-size:1.6em;line-height:.75}.ui-select-multiple.ui-select-bootstrap .ui-select-match-item{outline:0;margin:0 3px 3px 0}.ui-select-multiple .ui-select-match-item{position:relative}.ui-select-multiple .ui-select-match-item.dropping-before:before{content:"";position:absolute;top:0;right:100%;height:100%;margin-right:2px;border-left:1px solid #428bca}.ui-select-multiple .ui-select-match-item.dropping-after:after{content:"";position:absolute;top:0;left:100%;height:100%;margin-left:2px;border-right:1px solid #428bca}.ui-select-bootstrap .ui-select-choices-row>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.ui-select-bootstrap .ui-select-choices-row>a:focus,.ui-select-bootstrap .ui-select-choices-row>a:hover{text-decoration:none;color:#262626;background-color:#f5f5f5}.ui-select-bootstrap .ui-select-choices-row.active>a{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.ui-select-bootstrap .ui-select-choices-row.active.disabled>a,.ui-select-bootstrap .ui-select-choices-row.disabled>a{color:#777;cursor:not-allowed;background-color:#fff}.ui-select-match.ng-hide-add,.ui-select-search.ng-hide-add{display:none!important}.ui-select-bootstrap.ng-dirty.ng-invalid>button.btn.ui-select-match{border-color:#D44950} \ No newline at end of file diff --git a/data-mgmt/src/main/webapp/bower_components/angular-ui-select/dist/select.min.js b/data-mgmt/src/main/webapp/bower_components/angular-ui-select/dist/select.min.js old mode 100755 new mode 100644 index 0402e2a..7e50d79 --- a/data-mgmt/src/main/webapp/bower_components/angular-ui-select/dist/select.min.js +++ b/data-mgmt/src/main/webapp/bower_components/angular-ui-select/dist/select.min.js @@ -1,7 +1,8 @@ /*! * ui-select * http://github.com/angular-ui/ui-select - * Version: 0.8.3 - 2014-10-14T18:22:05.432Z + * Version: 0.11.2 - 2015-03-17T04:08:46.474Z * License: MIT */ -!function(){"use strict";var e={TAB:9,ENTER:13,ESC:27,SPACE:32,LEFT:37,UP:38,RIGHT:39,DOWN:40,SHIFT:16,CTRL:17,ALT:18,PAGE_UP:33,PAGE_DOWN:34,HOME:36,END:35,BACKSPACE:8,DELETE:46,COMMAND:91,isControl:function(t){var c=t.which;switch(c){case e.COMMAND:case e.SHIFT:case e.CTRL:case e.ALT:return!0}return t.metaKey?!0:!1},isFunctionKey:function(e){return e=e.which?e.which:e,e>=112&&123>=e},isVerticalMovement:function(t){return~[e.UP,e.DOWN].indexOf(t)},isHorizontalMovement:function(t){return~[e.LEFT,e.RIGHT,e.BACKSPACE,e.DELETE].indexOf(t)}};void 0===angular.element.prototype.querySelectorAll&&(angular.element.prototype.querySelectorAll=function(e){return angular.element(this[0].querySelectorAll(e))}),angular.module("ui.select",[]).constant("uiSelectConfig",{theme:"bootstrap",searchEnabled:!0,placeholder:"",refreshDelay:1e3}).service("uiSelectMinErr",function(){var e=angular.$$minErr("ui.select");return function(){var t=e.apply(this,arguments),c=t.message.replace(new RegExp("\nhttp://errors.angularjs.org/.*"),"");return new Error(c)}}).service("RepeatParser",["uiSelectMinErr","$parse",function(e,t){var c=this;c.parse=function(c){var l=c.match(/^\s*(?:([\s\S]+?)\s+as\s+)?([\S]+?)\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);if(!l)throw e("iexp","Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.",c);return{itemName:l[2],source:t(l[3]),trackByExp:l[4],modelMapper:t(l[1]||l[2])}},c.getGroupNgRepeatExpression=function(){return"$group in $select.groups"},c.getNgRepeatExpression=function(e,t,c,l){var s=e+" in "+(l?"$group.items":t);return c&&(s+=" track by "+c),s}}]).controller("uiSelectCtrl",["$scope","$element","$timeout","RepeatParser","uiSelectMinErr",function(t,c,l,s,i){function n(){p.resetSearchInput&&(p.search=d,p.selected&&p.items.length&&!p.multiple&&(p.activeIndex=p.items.indexOf(p.selected)))}function a(t){var c=!0;switch(t){case e.DOWN:!p.open&&p.multiple?p.activate(!1,!0):p.activeIndex0&&p.activeIndex--;break;case e.TAB:(!p.multiple||p.open)&&p.select(p.items[p.activeIndex],!0);break;case e.ENTER:p.open?p.select(p.items[p.activeIndex]):p.activate(!1,!0);break;case e.ESC:p.close();break;default:c=!1}return c}function r(t){function c(){switch(t){case e.LEFT:return~p.activeMatchIndex?u:n;case e.RIGHT:return~p.activeMatchIndex&&a!==n?r:(p.activate(),!1);case e.BACKSPACE:return~p.activeMatchIndex?(p.removeChoice(a),u):n;case e.DELETE:return~p.activeMatchIndex?(p.removeChoice(p.activeMatchIndex),a):!1}}var l=o(h[0]),s=p.selected.length,i=0,n=s-1,a=p.activeMatchIndex,r=p.activeMatchIndex+1,u=p.activeMatchIndex-1,d=a;return l>0||p.search.length&&t==e.RIGHT?!1:(p.close(),d=c(),p.activeMatchIndex=p.selected.length&&d!==!1?Math.min(n,Math.max(i,d)):-1,!0)}function o(e){return angular.isNumber(e.selectionStart)?e.selectionStart:e.value.length}function u(){var e=c.querySelectorAll(".ui-select-choices-content"),t=e.querySelectorAll(".ui-select-choices-row");if(t.length<1)throw i("choices","Expected multiple .ui-select-choices-row but got '{0}'.",t.length);var l=t[p.activeIndex],s=l.offsetTop+l.clientHeight-e[0].scrollTop,n=e[0].offsetHeight;s>n?e[0].scrollTop+=s-n:s=p.items.length?0:p.activeIndex,l(function(){p.search=e||p.search,h[0].focus()}))},p.findGroupByName=function(e){return p.groups&&p.groups.filter(function(t){return t.name===e})[0]},p.parseRepeatAttr=function(e,c){function l(e){p.groups=[],angular.forEach(e,function(e){var l=t.$eval(c),s=angular.isFunction(l)?l(e):e[l],i=p.findGroupByName(s);i?i.items.push(e):p.groups.push({name:s,items:[e]})}),p.items=[],p.groups.forEach(function(e){p.items=p.items.concat(e.items)})}function n(e){p.items=e}var a=c?l:n;p.parserResult=s.parse(e),p.isGrouped=!!c,p.itemProperty=p.parserResult.itemName,t.$watchCollection(p.parserResult.source,function(e){if(void 0===e||null===e)p.items=[];else{if(!angular.isArray(e))throw i("items","Expected an array but got '{0}'.",e);if(p.multiple){var t=e.filter(function(e){return p.selected.indexOf(e)<0});a(t)}else a(e);p.ngModel.$modelValue=null}}),p.multiple&&t.$watchCollection("$select.selected",function(e){var c=p.parserResult.source(t);if(e.length){var l=c.filter(function(t){return e.indexOf(t)<0});a(l)}else a(c);p.sizeSearchInput()})};var v;p.refresh=function(e){void 0!==e&&(v&&l.cancel(v),v=l(function(){t.$eval(e)},p.refreshDelay))},p.setActiveItem=function(e){p.activeIndex=p.items.indexOf(e)},p.isActive=function(e){return p.open&&p.items.indexOf(e[p.itemProperty])===p.activeIndex},p.isDisabled=function(e){if(p.open){var t,c=p.items.indexOf(e[p.itemProperty]),l=!1;return c>=0&&!angular.isUndefined(p.disableChoiceExpression)&&(t=p.items[c],l=!!e.$eval(p.disableChoiceExpression),t._uiSelectChoiceDisabled=l),l}},p.select=function(e,c){if(void 0===e||!e._uiSelectChoiceDisabled){var l={};l[p.parserResult.itemName]=e,p.onSelectCallback(t,{$item:e,$model:p.parserResult.modelMapper(t,l)}),p.multiple?(p.selected.push(e),p.sizeSearchInput()):p.selected=e,p.close(c)}},p.close=function(e){p.open&&(n(),p.open=!1,p.multiple||l(function(){p.focusser.prop("disabled",!1),e||p.focusser[0].focus()},0,!1))},p.toggle=function(e){p.open?p.close():p.activate(),e.preventDefault(),e.stopPropagation()},p.removeChoice=function(e){var c=p.selected[e],l={};l[p.parserResult.itemName]=c,p.selected.splice(e,1),p.activeMatchIndex=-1,p.sizeSearchInput(),p.onRemoveCallback(t,{$item:c,$model:p.parserResult.modelMapper(t,l)})},p.getPlaceholder=function(){return p.multiple&&p.selected.length?void 0:p.placeholder};var f;p.sizeSearchInput=function(){var e=h[0],c=h.parent().parent()[0];h.css("width","10px");var s=function(){var t=c.clientWidth-e.offsetLeft-10;50>t&&(t=c.clientWidth),h.css("width",t+"px")};l(function(){0!==c.clientWidth||f?f||s():f=t.$watch(function(){return c.clientWidth},function(e){0!==e&&(s(),f(),f=null)})},0,!1)},h.on("keydown",function(c){var l=c.which;t.$apply(function(){var t=!1;p.multiple&&e.isHorizontalMovement(l)&&(t=r(l)),!t&&p.items.length>0&&(t=a(l)),t&&l!=e.TAB&&(c.preventDefault(),c.stopPropagation())}),e.isVerticalMovement(l)&&p.items.length>0&&u()}),h.on("blur",function(){l(function(){p.activeMatchIndex=-1})}),t.$on("$destroy",function(){h.off("keydown blur")})}]).directive("uiSelect",["$document","uiSelectConfig","uiSelectMinErr","$compile","$parse",function(t,c,l,s,i){return{restrict:"EA",templateUrl:function(e,t){var l=t.theme||c.theme;return l+(angular.isDefined(t.multiple)?"/select-multiple.tpl.html":"/select.tpl.html")},replace:!0,transclude:!0,require:["uiSelect","ngModel"],scope:!0,controller:"uiSelectCtrl",controllerAs:"$select",link:function(c,n,a,r,o){function u(e){var t=!1;t=window.jQuery?window.jQuery.contains(n[0],e.target):n[0].contains(e.target),t||(p.close(),c.$digest())}var p=r[0],d=r[1],h=n.querySelectorAll("input.ui-select-search");p.multiple=angular.isDefined(a.multiple)?""===a.multiple?!0:"true"===a.multiple.toLowerCase():!1,p.onSelectCallback=i(a.onSelect),p.onRemoveCallback=i(a.onRemove),d.$parsers.unshift(function(e){var t,l={};if(p.multiple){for(var s=[],i=p.selected.length-1;i>=0;i--)l={},l[p.parserResult.itemName]=p.selected[i],t=p.parserResult.modelMapper(c,l),s.unshift(t);return s}return l={},l[p.parserResult.itemName]=e,t=p.parserResult.modelMapper(c,l)}),d.$formatters.unshift(function(e){var t,l=p.parserResult.source(c,{$select:{search:""}}),s={};if(l){if(p.multiple){var i=[],n=function(e,l){if(e&&e.length){for(var n=e.length-1;n>=0;n--)if(s[p.parserResult.itemName]=e[n],t=p.parserResult.modelMapper(c,s),t==l)return i.unshift(e[n]),!0;return!1}};if(!e)return i;for(var a=e.length-1;a>=0;a--)n(p.selected,e[a])||n(l,e[a]);return i}var r=function(l){return s[p.parserResult.itemName]=l,t=p.parserResult.modelMapper(c,s),t==e};if(p.selected&&r(p.selected))return p.selected;for(var o=l.length-1;o>=0;o--)if(r(l[o]))return l[o]}return e}),p.ngModel=d;var v=angular.element("");a.tabindex&&a.$observe("tabindex",function(e){p.multiple?h.attr("tabindex",e):v.attr("tabindex",e),n.removeAttr("tabindex")}),s(v)(c),p.focusser=v,p.multiple||(n.append(v),v.bind("focus",function(){c.$evalAsync(function(){p.focus=!0})}),v.bind("blur",function(){c.$evalAsync(function(){p.focus=!1})}),v.bind("keydown",function(t){return t.which===e.BACKSPACE?(t.preventDefault(),t.stopPropagation(),p.select(void 0),void c.$apply()):void(t.which===e.TAB||e.isControl(t)||e.isFunctionKey(t)||t.which===e.ESC||((t.which==e.DOWN||t.which==e.UP||t.which==e.ENTER||t.which==e.SPACE)&&(t.preventDefault(),t.stopPropagation(),p.activate()),c.$digest()))}),v.bind("keyup input",function(t){t.which===e.TAB||e.isControl(t)||e.isFunctionKey(t)||t.which===e.ESC||t.which==e.ENTER||t.which===e.BACKSPACE||(p.activate(v.val()),v.val(""),c.$digest())})),c.$watch("searchEnabled",function(){var e=c.$eval(a.searchEnabled);p.searchEnabled=void 0!==e?e:!0}),a.$observe("disabled",function(){p.disabled=void 0!==a.disabled?a.disabled:!1}),a.$observe("resetSearchInput",function(){var e=c.$eval(a.resetSearchInput);p.resetSearchInput=void 0!==e?e:!0}),p.multiple?(c.$watchCollection(function(){return d.$modelValue},function(e,t){t!=e&&(d.$modelValue=null)}),c.$watchCollection("$select.selected",function(){d.$setViewValue(Date.now())}),v.prop("disabled",!0)):c.$watch("$select.selected",function(e){d.$viewValue!==e&&d.$setViewValue(e)}),d.$render=function(){if(p.multiple&&!angular.isArray(d.$viewValue)){if(!angular.isUndefined(d.$viewValue)&&null!==d.$viewValue)throw l("multiarr","Expected model value to be array but got '{0}'",d.$viewValue);p.selected=[]}p.selected=d.$viewValue},t.on("click",u),c.$on("$destroy",function(){t.off("click",u)}),o(c,function(e){var t=angular.element("
    ").append(e),c=t.querySelectorAll(".ui-select-match");if(c.removeAttr("ui-select-match"),1!==c.length)throw l("transcluded","Expected 1 .ui-select-match but got '{0}'.",c.length);n.querySelectorAll(".ui-select-match").replaceWith(c);var s=t.querySelectorAll(".ui-select-choices");if(s.removeAttr("ui-select-choices"),1!==s.length)throw l("transcluded","Expected 1 .ui-select-choices but got '{0}'.",s.length);n.querySelectorAll(".ui-select-choices").replaceWith(s)})}}}]).directive("uiSelectChoices",["uiSelectConfig","RepeatParser","uiSelectMinErr","$compile",function(e,t,c,l){return{restrict:"EA",require:"^uiSelect",replace:!0,transclude:!0,templateUrl:function(t){var c=t.parent().attr("theme")||e.theme;return c+"/choices.tpl.html"},compile:function(s,i){if(!i.repeat)throw c("repeat","Expected 'repeat' expression.");return function(s,i,n,a,r){var o=n.groupBy;if(a.parseRepeatAttr(n.repeat,o),a.disableChoiceExpression=n.uiDisableChoice,o){var u=i.querySelectorAll(".ui-select-choices-group");if(1!==u.length)throw c("rows","Expected 1 .ui-select-choices-group but got '{0}'.",u.length);u.attr("ng-repeat",t.getGroupNgRepeatExpression())}var p=i.querySelectorAll(".ui-select-choices-row");if(1!==p.length)throw c("rows","Expected 1 .ui-select-choices-row but got '{0}'.",p.length);p.attr("ng-repeat",t.getNgRepeatExpression(a.parserResult.itemName,"$select.items",a.parserResult.trackByExp,o)).attr("ng-mouseenter","$select.setActiveItem("+a.parserResult.itemName+")").attr("ng-click","$select.select("+a.parserResult.itemName+")");var d=i.querySelectorAll(".ui-select-choices-row-inner");if(1!==d.length)throw c("rows","Expected 1 .ui-select-choices-row-inner but got '{0}'.",d.length);d.attr("uis-transclude-append",""),l(i,r)(s),s.$watch("$select.search",function(e){e&&!a.open&&a.multiple&&a.activate(!1,!0),a.activeIndex=0,a.refresh(n.refresh)}),n.$observe("refreshDelay",function(){var t=s.$eval(n.refreshDelay);a.refreshDelay=void 0!==t?t:e.refreshDelay})}}}}]).directive("uisTranscludeAppend",function(){return{link:function(e,t,c,l,s){s(e,function(e){t.append(e)})}}}).directive("uiSelectMatch",["uiSelectConfig",function(e){return{restrict:"EA",require:"^uiSelect",replace:!0,transclude:!0,templateUrl:function(t){var c=t.parent().attr("theme")||e.theme,l=t.parent().attr("multiple");return c+(l?"/match-multiple.tpl.html":"/match.tpl.html")},link:function(t,c,l,s){l.$observe("placeholder",function(t){s.placeholder=void 0!==t?t:e.placeholder}),s.multiple&&s.sizeSearchInput()}}}]).filter("highlight",function(){function e(e){return e.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}return function(t,c){return c&&t?t.replace(new RegExp(e(c),"gi"),'$&'):t}})}(),angular.module("ui.select").run(["$templateCache",function(e){e.put("bootstrap/choices.tpl.html",''),e.put("bootstrap/match-multiple.tpl.html",' × '),e.put("bootstrap/match.tpl.html",''),e.put("bootstrap/select-multiple.tpl.html",''),e.put("bootstrap/select.tpl.html",''),e.put("select2/choices.tpl.html",'
    • {{$group.name}}
    '),e.put("select2/match-multiple.tpl.html",'
  • '),e.put("select2/match.tpl.html",'{{$select.placeholder}} '),e.put("select2/select-multiple.tpl.html",'
    '),e.put("select2/select.tpl.html",'
    '),e.put("selectize/choices.tpl.html",'
    {{$group.name}}
    '),e.put("selectize/match.tpl.html",'
    '),e.put("selectize/select.tpl.html",'
    ')}]); \ No newline at end of file +!function(){"use strict";var e={TAB:9,ENTER:13,ESC:27,SPACE:32,LEFT:37,UP:38,RIGHT:39,DOWN:40,SHIFT:16,CTRL:17,ALT:18,PAGE_UP:33,PAGE_DOWN:34,HOME:36,END:35,BACKSPACE:8,DELETE:46,COMMAND:91,MAP:{91:"COMMAND",8:"BACKSPACE",9:"TAB",13:"ENTER",16:"SHIFT",17:"CTRL",18:"ALT",19:"PAUSEBREAK",20:"CAPSLOCK",27:"ESC",32:"SPACE",33:"PAGE_UP",34:"PAGE_DOWN",35:"END",36:"HOME",37:"LEFT",38:"UP",39:"RIGHT",40:"DOWN",43:"+",44:"PRINTSCREEN",45:"INSERT",46:"DELETE",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",61:"=",65:"A",66:"B",67:"C",68:"D",69:"E",70:"F",71:"G",72:"H",73:"I",74:"J",75:"K",76:"L",77:"M",78:"N",79:"O",80:"P",81:"Q",82:"R",83:"S",84:"T",85:"U",86:"V",87:"W",88:"X",89:"Y",90:"Z",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9",106:"*",107:"+",109:"-",110:".",111:"/",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NUMLOCK",145:"SCROLLLOCK",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},isControl:function(t){var c=t.which;switch(c){case e.COMMAND:case e.SHIFT:case e.CTRL:case e.ALT:return!0}return t.metaKey?!0:!1},isFunctionKey:function(e){return e=e.which?e.which:e,e>=112&&123>=e},isVerticalMovement:function(t){return~[e.UP,e.DOWN].indexOf(t)},isHorizontalMovement:function(t){return~[e.LEFT,e.RIGHT,e.BACKSPACE,e.DELETE].indexOf(t)}};void 0===angular.element.prototype.querySelectorAll&&(angular.element.prototype.querySelectorAll=function(e){return angular.element(this[0].querySelectorAll(e))}),void 0===angular.element.prototype.closest&&(angular.element.prototype.closest=function(e){for(var t=this[0],c=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.msMatchesSelector;t;){if(c.bind(t)(e))return t;t=t.parentElement}return!1});var t=0,c=angular.module("ui.select",[]).constant("uiSelectConfig",{theme:"bootstrap",searchEnabled:!0,sortable:!1,placeholder:"",refreshDelay:1e3,closeOnSelect:!0,generateId:function(){return t++},appendToBody:!1}).service("uiSelectMinErr",function(){var e=angular.$$minErr("ui.select");return function(){var t=e.apply(this,arguments),c=t.message.replace(new RegExp("\nhttp://errors.angularjs.org/.*"),"");return new Error(c)}}).directive("uisTranscludeAppend",function(){return{link:function(e,t,c,i,s){s(e,function(e){t.append(e)})}}}).filter("highlight",function(){function e(e){return e.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}return function(t,c){return c&&t?t.replace(new RegExp(e(c),"gi"),'$&'):t}}).factory("uisOffset",["$document","$window",function(e,t){return function(c){var i=c[0].getBoundingClientRect();return{width:i.width||c.prop("offsetWidth"),height:i.height||c.prop("offsetHeight"),top:i.top+(t.pageYOffset||e[0].documentElement.scrollTop),left:i.left+(t.pageXOffset||e[0].documentElement.scrollLeft)}}}]);c.directive("uiSelectChoices",["uiSelectConfig","uisRepeatParser","uiSelectMinErr","$compile",function(e,t,c,i){return{restrict:"EA",require:"^uiSelect",replace:!0,transclude:!0,templateUrl:function(t){var c=t.parent().attr("theme")||e.theme;return c+"/choices.tpl.html"},compile:function(s,l){if(!l.repeat)throw c("repeat","Expected 'repeat' expression.");return function(s,l,n,a,r){var o=n.groupBy;if(a.parseRepeatAttr(n.repeat,o),a.disableChoiceExpression=n.uiDisableChoice,a.onHighlightCallback=n.onHighlight,o){var u=l.querySelectorAll(".ui-select-choices-group");if(1!==u.length)throw c("rows","Expected 1 .ui-select-choices-group but got '{0}'.",u.length);u.attr("ng-repeat",t.getGroupNgRepeatExpression())}var d=l.querySelectorAll(".ui-select-choices-row");if(1!==d.length)throw c("rows","Expected 1 .ui-select-choices-row but got '{0}'.",d.length);d.attr("ng-repeat",t.getNgRepeatExpression(a.parserResult.itemName,"$select.items",a.parserResult.trackByExp,o)).attr("ng-if","$select.open").attr("ng-mouseenter","$select.setActiveItem("+a.parserResult.itemName+")").attr("ng-click","$select.select("+a.parserResult.itemName+",false,$event)");var p=l.querySelectorAll(".ui-select-choices-row-inner");if(1!==p.length)throw c("rows","Expected 1 .ui-select-choices-row-inner but got '{0}'.",p.length);p.attr("uis-transclude-append",""),i(l,r)(s),s.$watch("$select.search",function(e){e&&!a.open&&a.multiple&&a.activate(!1,!0),a.activeIndex=a.tagging.isActivated?-1:0,a.refresh(n.refresh)}),n.$observe("refreshDelay",function(){var t=s.$eval(n.refreshDelay);a.refreshDelay=void 0!==t?t:e.refreshDelay})}}}}]),c.controller("uiSelectCtrl",["$scope","$element","$timeout","$filter","uisRepeatParser","uiSelectMinErr","uiSelectConfig",function(t,c,i,s,l,n,a){function r(){(d.resetSearchInput||void 0===d.resetSearchInput&&a.resetSearchInput)&&(d.search=p,d.selected&&d.items.length&&!d.multiple&&(d.activeIndex=d.items.indexOf(d.selected)))}function o(t){var c=!0;switch(t){case e.DOWN:!d.open&&d.multiple?d.activate(!1,!0):d.activeIndex0||0===d.search.length&&d.tagging.isActivated&&d.activeIndex>-1)&&d.activeIndex--;break;case e.TAB:(!d.multiple||d.open)&&d.select(d.items[d.activeIndex],!0);break;case e.ENTER:d.open&&d.activeIndex>=0?d.select(d.items[d.activeIndex]):d.activate(!1,!0);break;case e.ESC:d.close();break;default:c=!1}return c}function u(){var e=c.querySelectorAll(".ui-select-choices-content"),t=e.querySelectorAll(".ui-select-choices-row");if(t.length<1)throw n("choices","Expected multiple .ui-select-choices-row but got '{0}'.",t.length);if(!(d.activeIndex<0)){var i=t[d.activeIndex],s=i.offsetTop+i.clientHeight-e[0].scrollTop,l=e[0].offsetHeight;s>l?e[0].scrollTop+=s-l:s=d.items.length?0:d.activeIndex,-1===d.activeIndex&&d.taggingLabel!==!1&&(d.activeIndex=0),i(function(){d.search=e||d.search,d.searchInput[0].focus()}))},d.findGroupByName=function(e){return d.groups&&d.groups.filter(function(t){return t.name===e})[0]},d.parseRepeatAttr=function(e,c){function i(e){d.groups=[],angular.forEach(e,function(e){var i=t.$eval(c),s=angular.isFunction(i)?i(e):e[i],l=d.findGroupByName(s);l?l.items.push(e):d.groups.push({name:s,items:[e]})}),d.items=[],d.groups.forEach(function(e){d.items=d.items.concat(e.items)})}function s(e){d.items=e}d.setItemsFn=c?i:s,d.parserResult=l.parse(e),d.isGrouped=!!c,d.itemProperty=d.parserResult.itemName,d.refreshItems=function(e){e=e||d.parserResult.source(t);var c=d.selected;if(angular.isArray(c)&&!c.length||!d.removeSelected)d.setItemsFn(e);else if(void 0!==e){var i=e.filter(function(e){return c.indexOf(e)<0});d.setItemsFn(i)}},t.$watchCollection(d.parserResult.source,function(e){if(void 0===e||null===e)d.items=[];else{if(!angular.isArray(e))throw n("items","Expected an array but got '{0}'.",e);d.refreshItems(e),d.ngModel.$modelValue=null}})};var h;d.refresh=function(e){void 0!==e&&(h&&i.cancel(h),h=i(function(){t.$eval(e)},d.refreshDelay))},d.setActiveItem=function(e){d.activeIndex=d.items.indexOf(e)},d.isActive=function(e){if(!d.open)return!1;var t=d.items.indexOf(e[d.itemProperty]),c=t===d.activeIndex;return!c||0>t&&d.taggingLabel!==!1||0>t&&d.taggingLabel===!1?!1:(c&&!angular.isUndefined(d.onHighlightCallback)&&e.$eval(d.onHighlightCallback),c)},d.isDisabled=function(e){if(d.open){var t,c=d.items.indexOf(e[d.itemProperty]),i=!1;return c>=0&&!angular.isUndefined(d.disableChoiceExpression)&&(t=d.items[c],i=!!e.$eval(d.disableChoiceExpression),t._uiSelectChoiceDisabled=i),i}},d.select=function(e,c,s){if(void 0===e||!e._uiSelectChoiceDisabled){if(!d.items&&!d.search)return;if(!e||!e._uiSelectChoiceDisabled){if(d.tagging.isActivated){if(d.taggingLabel===!1)if(d.activeIndex<0){if(e=void 0!==d.tagging.fct?d.tagging.fct(d.search):d.search,!e||angular.equals(d.items[0],e))return}else e=d.items[d.activeIndex];else if(0===d.activeIndex){if(void 0===e)return;if(void 0!==d.tagging.fct&&"string"==typeof e){if(e=d.tagging.fct(d.search),!e)return}else"string"==typeof e&&(e=e.replace(d.taggingLabel,"").trim())}if(d.selected&&angular.isArray(d.selected)&&d.selected.filter(function(t){return angular.equals(t,e)}).length>0)return d.close(c),void 0}t.$broadcast("uis:select",e);var l={};l[d.parserResult.itemName]=e,i(function(){d.onSelectCallback(t,{$item:e,$model:d.parserResult.modelMapper(t,l)})}),d.closeOnSelect&&d.close(c),s&&"click"===s.type&&(d.clickTriggeredSelect=!0)}}},d.close=function(e){d.open&&(d.ngModel&&d.ngModel.$setTouched&&d.ngModel.$setTouched(),r(),d.open=!1,t.$broadcast("uis:close",e))},d.setFocus=function(){d.focus||d.focusInput[0].focus()},d.clear=function(e){d.select(void 0),e.stopPropagation(),d.focusser[0].focus()},d.toggle=function(e){d.open?(d.close(),e.preventDefault(),e.stopPropagation()):d.activate()},d.isLocked=function(e,t){var c,i=d.selected[t];return i&&!angular.isUndefined(d.lockChoiceExpression)&&(c=!!e.$eval(d.lockChoiceExpression),i._uiSelectChoiceLocked=c),c};var g=null;d.sizeSearchInput=function(){var e=d.searchInput[0],c=d.searchInput.parent().parent()[0],s=function(){return c.clientWidth*!!e.offsetParent},l=function(t){if(0===t)return!1;var c=t-e.offsetLeft-10;return 50>c&&(c=t),d.searchInput.css("width",c+"px"),!0};d.searchInput.css("width","10px"),i(function(){null!==g||l(s())||(g=t.$watch(s,function(e){l(e)&&(g(),g=null)}))})},d.searchInput.on("keydown",function(c){var s=c.which;t.$apply(function(){var t=!1;if((d.items.length>0||d.tagging.isActivated)&&(o(s),d.taggingTokens.isActivated)){for(var l=0;l0&&(t=!0);t&&i(function(){d.searchInput.triggerHandler("tagged");var t=d.search.replace(e.MAP[c.keyCode],"").trim();d.tagging.fct&&(t=d.tagging.fct(t)),t&&d.select(t,!0)})}}),e.isVerticalMovement(s)&&d.items.length>0&&u()}),d.searchInput.on("paste",function(e){var t=e.originalEvent.clipboardData.getData("text/plain");if(t&&t.length>0&&d.taggingTokens.isActivated&&d.tagging.fct){var c=t.split(d.taggingTokens.tokens[0]);c&&c.length>0&&(angular.forEach(c,function(e){var t=d.tagging.fct(e);t&&d.select(t,!0)}),e.preventDefault(),e.stopPropagation())}}),d.searchInput.on("tagged",function(){i(function(){r()})}),t.$on("$destroy",function(){d.searchInput.off("keyup keydown tagged blur paste")})}]),c.directive("uiSelect",["$document","uiSelectConfig","uiSelectMinErr","uisOffset","$compile","$parse","$timeout",function(e,t,c,i,s,l,n){return{restrict:"EA",templateUrl:function(e,c){var i=c.theme||t.theme;return i+(angular.isDefined(c.multiple)?"/select-multiple.tpl.html":"/select.tpl.html")},replace:!0,transclude:!0,require:["uiSelect","^ngModel"],scope:!0,controller:"uiSelectCtrl",controllerAs:"$select",compile:function(s,a){return angular.isDefined(a.multiple)?s.append("").removeAttr("multiple"):s.append(""),function(s,a,r,o,u){function d(e){if(g.open){var t=!1;if(t=window.jQuery?window.jQuery.contains(a[0],e.target):a[0].contains(e.target),!t&&!g.clickTriggeredSelect){var c=["input","button","textarea"],i=angular.element(e.target).scope(),l=i&&i.$select&&i.$select!==g;l||(l=~c.indexOf(e.target.tagName.toLowerCase())),g.close(l),s.$digest()}g.clickTriggeredSelect=!1}}function p(){var t=i(a);m=angular.element('
    '),m[0].style.width=t.width+"px",m[0].style.height=t.height+"px",a.after(m),$=a[0].style.width,e.find("body").append(a),a[0].style.position="absolute",a[0].style.left=t.left+"px",a[0].style.top=t.top+"px",a[0].style.width=t.width+"px"}function h(){null!==m&&(m.replaceWith(a),m=null,a[0].style.position="",a[0].style.left="",a[0].style.top="",a[0].style.width=$)}var g=o[0],f=o[1];g.generatedId=t.generateId(),g.baseTitle=r.title||"Select box",g.focusserTitle=g.baseTitle+" focus",g.focusserId="focusser-"+g.generatedId,g.closeOnSelect=function(){return angular.isDefined(r.closeOnSelect)?l(r.closeOnSelect)():t.closeOnSelect}(),g.onSelectCallback=l(r.onSelect),g.onRemoveCallback=l(r.onRemove),g.ngModel=f,g.choiceGrouped=function(e){return g.isGrouped&&e&&e.name},r.tabindex&&r.$observe("tabindex",function(e){g.focusInput.attr("tabindex",e),a.removeAttr("tabindex")}),s.$watch("searchEnabled",function(){var e=s.$eval(r.searchEnabled);g.searchEnabled=void 0!==e?e:t.searchEnabled}),s.$watch("sortable",function(){var e=s.$eval(r.sortable);g.sortable=void 0!==e?e:t.sortable}),r.$observe("disabled",function(){g.disabled=void 0!==r.disabled?r.disabled:!1}),r.$observe("resetSearchInput",function(){var e=s.$eval(r.resetSearchInput);g.resetSearchInput=void 0!==e?e:!0}),r.$observe("tagging",function(){if(void 0!==r.tagging){var e=s.$eval(r.tagging);g.tagging={isActivated:!0,fct:e!==!0?e:void 0}}else g.tagging={isActivated:!1,fct:void 0}}),r.$observe("taggingLabel",function(){void 0!==r.tagging&&(g.taggingLabel="false"===r.taggingLabel?!1:void 0!==r.taggingLabel?r.taggingLabel:"(new)")}),r.$observe("taggingTokens",function(){if(void 0!==r.tagging){var e=void 0!==r.taggingTokens?r.taggingTokens.split("|"):[",","ENTER"];g.taggingTokens={isActivated:!0,tokens:e}}}),angular.isDefined(r.autofocus)&&n(function(){g.setFocus()}),angular.isDefined(r.focusOn)&&s.$on(r.focusOn,function(){n(function(){g.setFocus()})}),e.on("click",d),s.$on("$destroy",function(){e.off("click",d)}),u(s,function(e){var t=angular.element("
    ").append(e),i=t.querySelectorAll(".ui-select-match");if(i.removeAttr("ui-select-match"),i.removeAttr("data-ui-select-match"),1!==i.length)throw c("transcluded","Expected 1 .ui-select-match but got '{0}'.",i.length);a.querySelectorAll(".ui-select-match").replaceWith(i);var s=t.querySelectorAll(".ui-select-choices");if(s.removeAttr("ui-select-choices"),s.removeAttr("data-ui-select-choices"),1!==s.length)throw c("transcluded","Expected 1 .ui-select-choices but got '{0}'.",s.length);a.querySelectorAll(".ui-select-choices").replaceWith(s)});var v=s.$eval(r.appendToBody);(void 0!==v?v:t.appendToBody)&&(s.$watch("$select.open",function(e){e?p():h()}),s.$on("$destroy",function(){h()}));var m=null,$=""}}}}]),c.directive("uiSelectMatch",["uiSelectConfig",function(e){return{restrict:"EA",require:"^uiSelect",replace:!0,transclude:!0,templateUrl:function(t){var c=t.parent().attr("theme")||e.theme,i=t.parent().attr("multiple");return c+(i?"/match-multiple.tpl.html":"/match.tpl.html")},link:function(t,c,i,s){function l(e){s.allowClear=angular.isDefined(e)?""===e?!0:"true"===e.toLowerCase():!1}s.lockChoiceExpression=i.uiLockChoice,i.$observe("placeholder",function(t){s.placeholder=void 0!==t?t:e.placeholder}),i.$observe("allowClear",l),l(i.allowClear),s.multiple&&s.sizeSearchInput()}}}]),c.directive("uiSelectMultiple",["uiSelectMinErr","$timeout",function(t,c){return{restrict:"EA",require:["^uiSelect","^ngModel"],controller:["$scope","$timeout",function(e,t){var c,i=this,s=e.$select;e.$evalAsync(function(){c=e.ngModel}),i.activeMatchIndex=-1,i.updateModel=function(){c.$setViewValue(Date.now()),i.refreshComponent()},i.refreshComponent=function(){s.refreshItems(),s.sizeSearchInput()},i.removeChoice=function(c){var l=s.selected[c];if(!l._uiSelectChoiceLocked){var n={};n[s.parserResult.itemName]=l,s.selected.splice(c,1),i.activeMatchIndex=-1,s.sizeSearchInput(),t(function(){s.onRemoveCallback(e,{$item:l,$model:s.parserResult.modelMapper(e,n)})}),i.updateModel()}},i.getPlaceholder=function(){return s.selected.length?void 0:s.placeholder}}],controllerAs:"$selectMultiple",link:function(i,s,l,n){function a(e){return angular.isNumber(e.selectionStart)?e.selectionStart:e.value.length}function r(t){function c(){switch(t){case e.LEFT:return~h.activeMatchIndex?u:n;case e.RIGHT:return~h.activeMatchIndex&&r!==n?o:(d.activate(),!1);case e.BACKSPACE:return~h.activeMatchIndex?(h.removeChoice(r),u):n;case e.DELETE:return~h.activeMatchIndex?(h.removeChoice(h.activeMatchIndex),r):!1}}var i=a(d.searchInput[0]),s=d.selected.length,l=0,n=s-1,r=h.activeMatchIndex,o=h.activeMatchIndex+1,u=h.activeMatchIndex-1,p=r;return i>0||d.search.length&&t==e.RIGHT?!1:(d.close(),p=c(),h.activeMatchIndex=d.selected.length&&p!==!1?Math.min(n,Math.max(l,p)):-1,!0)}function o(e){if(void 0===e||void 0===d.search)return!1;var t=e.filter(function(e){return void 0===d.search.toUpperCase()||void 0===e?!1:e.toUpperCase()===d.search.toUpperCase()}).length>0;return t}function u(e,t){var c=-1;if(angular.isArray(e))for(var i=angular.copy(e),s=0;s=0;s--)t={},t[d.parserResult.itemName]=d.selected[s],e=d.parserResult.modelMapper(i,t),c.unshift(e);return c}),p.$formatters.unshift(function(e){var t,c=d.parserResult.source(i,{$select:{search:""}}),s={};if(!c)return e;var l=[],n=function(e,c){if(e&&e.length){for(var n=e.length-1;n>=0;n--){if(s[d.parserResult.itemName]=e[n],t=d.parserResult.modelMapper(i,s),d.parserResult.trackByExp){var a=/\.(.+)/.exec(d.parserResult.trackByExp);if(a.length>0&&t[a[1]]==c[a[1]])return l.unshift(e[n]),!0}if(angular.equals(t,c))return l.unshift(e[n]),!0}return!1}};if(!e)return l;for(var a=e.length-1;a>=0;a--)n(d.selected,e[a])||n(c,e[a])||l.unshift(e[a]);return l}),i.$watchCollection(function(){return p.$modelValue},function(e,t){t!=e&&(p.$modelValue=null,h.refreshComponent())}),p.$render=function(){if(!angular.isArray(p.$viewValue)){if(!angular.isUndefined(p.$viewValue)&&null!==p.$viewValue)throw t("multiarr","Expected model value to be array but got '{0}'",p.$viewValue);d.selected=[]}d.selected=p.$viewValue,i.$evalAsync()},i.$on("uis:select",function(e,t){d.selected.push(t),h.updateModel()}),i.$on("uis:activate",function(){h.activeMatchIndex=-1}),i.$watch("$select.disabled",function(e,t){t&&!e&&d.sizeSearchInput()}),d.searchInput.on("keydown",function(t){var c=t.which;i.$apply(function(){var i=!1;e.isHorizontalMovement(c)&&(i=r(c)),i&&c!=e.TAB&&(t.preventDefault(),t.stopPropagation())})}),d.searchInput.on("keyup",function(t){if(e.isVerticalMovement(t.which)||i.$evalAsync(function(){d.activeIndex=d.taggingLabel===!1?-1:0}),d.tagging.isActivated&&d.search.length>0){if(t.which===e.TAB||e.isControl(t)||e.isFunctionKey(t)||t.which===e.ESC||e.isVerticalMovement(t.which))return;if(d.activeIndex=d.taggingLabel===!1?-1:0,d.taggingLabel===!1)return;var c,s,l,n,a=angular.copy(d.items),r=angular.copy(d.items),p=!1,h=-1;if(void 0!==d.tagging.fct){if(l=d.$filter("filter")(a,{isTag:!0}),l.length>0&&(n=l[0]),a.length>0&&n&&(p=!0,a=a.slice(1,a.length),r=r.slice(1,r.length)),c=d.tagging.fct(d.search),c.isTag=!0,r.filter(function(e){return angular.equals(e,d.tagging.fct(d.search))}).length>0)return;c.isTag=!0}else{if(l=d.$filter("filter")(a,function(e){return e.match(d.taggingLabel)}),l.length>0&&(n=l[0]),s=a[0],void 0!==s&&a.length>0&&n&&(p=!0,a=a.slice(1,a.length),r=r.slice(1,r.length)),c=d.search+" "+d.taggingLabel,u(d.selected,d.search)>-1)return;if(o(r.concat(d.selected)))return p&&(a=r,i.$evalAsync(function(){d.activeIndex=0,d.items=a})),void 0;if(o(r))return p&&(d.items=r.slice(1,r.length)),void 0}p&&(h=u(d.selected,c)),h>-1?a=a.slice(h+1,a.length-1):(a=[],a.push(c),a=a.concat(r)),i.$evalAsync(function(){d.activeIndex=0,d.items=a})}}),d.searchInput.on("blur",function(){c(function(){h.activeMatchIndex=-1})})}}}]),c.directive("uiSelectSingle",["$timeout","$compile",function(t,c){return{restrict:"EA",require:["^uiSelect","^ngModel"],link:function(i,s,l,n){var a=n[0],r=n[1];r.$parsers.unshift(function(e){var t,c={};return c[a.parserResult.itemName]=e,t=a.parserResult.modelMapper(i,c)}),r.$formatters.unshift(function(e){var t,c=a.parserResult.source(i,{$select:{search:""}}),s={};if(c){var l=function(c){return s[a.parserResult.itemName]=c,t=a.parserResult.modelMapper(i,s),t==e};if(a.selected&&l(a.selected))return a.selected;for(var n=c.length-1;n>=0;n--)if(l(c[n]))return c[n]}return e}),i.$watch("$select.selected",function(e){r.$viewValue!==e&&r.$setViewValue(e)}),r.$render=function(){a.selected=r.$viewValue},i.$on("uis:select",function(e,t){a.selected=t}),i.$on("uis:close",function(e,c){t(function(){a.focusser.prop("disabled",!1),c||a.focusser[0].focus()},0,!1)}),i.$on("uis:activate",function(){o.prop("disabled",!0)});var o=angular.element("");c(o)(i),a.focusser=o,a.focusInput=o,s.parent().append(o),o.bind("focus",function(){i.$evalAsync(function(){a.focus=!0})}),o.bind("blur",function(){i.$evalAsync(function(){a.focus=!1})}),o.bind("keydown",function(t){return t.which===e.BACKSPACE?(t.preventDefault(),t.stopPropagation(),a.select(void 0),i.$apply(),void 0):(t.which===e.TAB||e.isControl(t)||e.isFunctionKey(t)||t.which===e.ESC||((t.which==e.DOWN||t.which==e.UP||t.which==e.ENTER||t.which==e.SPACE)&&(t.preventDefault(),t.stopPropagation(),a.activate()),i.$digest()),void 0)}),o.bind("keyup input",function(t){t.which===e.TAB||e.isControl(t)||e.isFunctionKey(t)||t.which===e.ESC||t.which==e.ENTER||t.which===e.BACKSPACE||(a.activate(o.val()),o.val(""),i.$digest())})}}}]),c.directive("uiSelectSort",["$timeout","uiSelectConfig","uiSelectMinErr",function(e,t,c){return{require:"^uiSelect",link:function(t,i,s,l){if(null===t[s.uiSelectSort])throw c("sort","Expected a list to sort");var n=angular.extend({axis:"horizontal"},t.$eval(s.uiSelectSortOptions)),a=n.axis,r="dragging",o="dropping",u="dropping-before",d="dropping-after";t.$watch(function(){return l.sortable},function(e){e?i.attr("draggable",!0):i.removeAttr("draggable")}),i.on("dragstart",function(e){i.addClass(r),(e.dataTransfer||e.originalEvent.dataTransfer).setData("text/plain",t.$index)}),i.on("dragend",function(){i.removeClass(r)});var p,h=function(e,t){this.splice(t,0,this.splice(e,1)[0])},g=function(e){e.preventDefault();var t="vertical"===a?e.offsetY||e.layerY||(e.originalEvent?e.originalEvent.offsetY:0):e.offsetX||e.layerX||(e.originalEvent?e.originalEvent.offsetX:0);t
  • '),e.put("bootstrap/match-multiple.tpl.html",' × '),e.put("bootstrap/match.tpl.html",'
    {{$select.placeholder}}
    '),e.put("bootstrap/select-multiple.tpl.html",''),e.put("bootstrap/select.tpl.html",''),e.put("select2/choices.tpl.html",'
    '),e.put("select2/match-multiple.tpl.html",'
  • '),e.put("select2/match.tpl.html",'{{$select.placeholder}} '),e.put("select2/select-multiple.tpl.html",'
    '),e.put("select2/select.tpl.html",'
    '),e.put("selectize/choices.tpl.html",'
    '),e.put("selectize/match.tpl.html",'
    '),e.put("selectize/select.tpl.html",'
    ') +}]); \ No newline at end of file diff --git a/data-mgmt/src/main/webapp/bower_components/angular-ui-select/package.json b/data-mgmt/src/main/webapp/bower_components/angular-ui-select/package.json index f329c54..d3779da 100644 --- a/data-mgmt/src/main/webapp/bower_components/angular-ui-select/package.json +++ b/data-mgmt/src/main/webapp/bower_components/angular-ui-select/package.json @@ -6,7 +6,7 @@ "repository": { "url": "git://github.com/angular-ui/ui-select.git" }, - "version": "0.8.3", + "version": "0.11.2", "devDependencies": { "bower": "~1.3", "del": "~0.1.1", @@ -15,6 +15,7 @@ "gulp-angular-templatecache": "~1.2.1", "gulp-concat": "~2.1.7", "gulp-header": "~1.0.2", + "gulp-footer": "~1.0.5", "gulp-jshint": "1.6.4", "gulp-minify-css": "~0.3.6", "gulp-minify-html": "~0.1.0", diff --git a/data-mgmt/src/main/webapp/bower_components/angular/.bower.json b/data-mgmt/src/main/webapp/bower_components/angular/.bower.json index caf3abd..a382c17 100644 --- a/data-mgmt/src/main/webapp/bower_components/angular/.bower.json +++ b/data-mgmt/src/main/webapp/bower_components/angular/.bower.json @@ -1,17 +1,17 @@ { "name": "angular", - "version": "1.3.4", + "version": "1.3.15", "main": "./angular.js", "ignore": [], "dependencies": {}, "homepage": "https://github.com/angular/bower-angular", - "_release": "1.3.4", + "_release": "1.3.15", "_resolution": { "type": "version", - "tag": "v1.3.4", - "commit": "34f023ddd2f1aa96b9df258a0bd9a71f36a26355" + "tag": "v1.3.15", + "commit": "ba7abcfa409ba852146e6ba206693cf7bac3e359" }, "_source": "git://github.com/angular/bower-angular.git", - "_target": "1.3.4", + "_target": "1.3.15", "_originalSource": "angular" } \ No newline at end of file diff --git a/data-mgmt/src/main/webapp/bower_components/angular/README.md b/data-mgmt/src/main/webapp/bower_components/angular/README.md index 897fb7f..d1bc0ed 100644 --- a/data-mgmt/src/main/webapp/bower_components/angular/README.md +++ b/data-mgmt/src/main/webapp/bower_components/angular/README.md @@ -20,10 +20,7 @@ Then add a ` ``` -Note that this package is not in CommonJS format, so doing `require('angular')` will return `undefined`. -If you're using [Browserify](https://github.com/substack/node-browserify), you can use -[exposify](https://github.com/thlorenz/exposify) to have `require('angular')` return the `angular` -global. +Or `require('angular')` from your code. ### bower @@ -46,7 +43,7 @@ Documentation is available on the The MIT License -Copyright (c) 2010-2012 Google, Inc. http://angularjs.org +Copyright (c) 2010-2015 Google, Inc. http://angularjs.org Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/data-mgmt/src/main/webapp/bower_components/angular/angular.js b/data-mgmt/src/main/webapp/bower_components/angular/angular.js index d76150b..e488352 100644 --- a/data-mgmt/src/main/webapp/bower_components/angular/angular.js +++ b/data-mgmt/src/main/webapp/bower_components/angular/angular.js @@ -1,5 +1,5 @@ /** - * @license AngularJS v1.3.4 + * @license AngularJS v1.3.15 * (c) 2010-2014 Google, Inc. http://angularjs.org * License: MIT */ @@ -54,7 +54,7 @@ function minErr(module, ErrorConstructor) { return match; }); - message = message + '\nhttp://errors.angularjs.org/1.3.4/' + + message = message + '\nhttp://errors.angularjs.org/1.3.15/' + (module ? module + '/' : '') + code; for (i = 2; i < arguments.length; i++) { message = message + (i == 2 ? '?' : '&') + 'p' + (i - 2) + '=' + @@ -109,6 +109,7 @@ function minErr(module, ErrorConstructor) { isWindow: true, isScope: true, isFile: true, + isFormData: true, isBlob: true, isBoolean: true, isPromiseLike: true, @@ -226,8 +227,8 @@ if ('i' !== 'I'.toLowerCase()) { } -var /** holds major version number for IE or NaN for real browsers */ - msie, +var + msie, // holds major version number for IE, or NaN if UA is not IE. jqLite, // delay binding since jQuery could be loaded after us. jQuery, // delay binding slice = [].slice, @@ -380,8 +381,7 @@ function nextUid() { function setHashKey(obj, h) { if (h) { obj.$$hashKey = h; - } - else { + } else { delete obj.$$hashKey; } } @@ -464,6 +464,8 @@ noop.$inject = []; return (transformationFn || angular.identity)(value); }; ``` + * @param {*} value to be returned. + * @returns {*} the value passed in. */ function identity($) {return $;} identity.$inject = []; @@ -544,6 +546,12 @@ function isString(value) {return typeof value === 'string';} * @description * Determines if a reference is a `Number`. * + * This includes the "special" numbers `NaN`, `+Infinity` and `-Infinity`. + * + * If you wish to exclude these then you can use the native + * [`isFinite'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isFinite) + * method. + * * @param {*} value Reference to check. * @returns {boolean} True if `value` is a `Number`. */ @@ -630,6 +638,11 @@ function isFile(obj) { } +function isFormData(obj) { + return toString.call(obj) === '[object FormData]'; +} + + function isBlob(obj) { return toString.call(obj) === '[object Blob]'; } @@ -683,7 +696,7 @@ function isElement(node) { function makeMap(str) { var obj = {}, items = str.split(","), i; for (i = 0; i < items.length; i++) - obj[ items[i] ] = true; + obj[items[i]] = true; return obj; } @@ -713,7 +726,7 @@ function arrayRemove(array, value) { * Creates a deep copy of `source`, which should be an object or an array. * * * If no destination is supplied, a copy of the object or array is created. - * * If a destination is provided, all of its elements (for array) or properties (for objects) + * * If a destination is provided, all of its elements (for arrays) or properties (for objects) * are deleted and then all elements/properties from the source are copied to it. * * If `source` is not an object or array (inc. `null` and `undefined`), `source` is returned. * * If `source` is identical to 'destination' an exception will be thrown. @@ -907,10 +920,11 @@ function equals(o1, o2) { } else if (isDate(o1)) { if (!isDate(o2)) return false; return equals(o1.getTime(), o2.getTime()); - } else if (isRegExp(o1) && isRegExp(o2)) { - return o1.toString() == o2.toString(); + } else if (isRegExp(o1)) { + return isRegExp(o2) ? o1.toString() == o2.toString() : false; } else { - if (isScope(o1) || isScope(o2) || isWindow(o1) || isWindow(o2) || isArray(o2)) return false; + if (isScope(o1) || isScope(o2) || isWindow(o1) || isWindow(o2) || + isArray(o2) || isDate(o2) || isRegExp(o2)) return false; keySet = {}; for (key in o1) { if (key.charAt(0) === '$' || isFunction(o1[key])) continue; @@ -1028,12 +1042,16 @@ function toJsonReplacer(key, value) { * stripped since angular uses this notation internally. * * @param {Object|Array|Date|string|number} obj Input to be serialized into JSON. - * @param {boolean=} pretty If set to true, the JSON output will contain newlines and whitespace. + * @param {boolean|number=} pretty If set to true, the JSON output will contain newlines and whitespace. + * If set to an integer, the JSON output will contain that many spaces per indentation (the default is 2). * @returns {string|undefined} JSON-ified string representing `obj`. */ function toJson(obj, pretty) { if (typeof obj === 'undefined') return undefined; - return JSON.stringify(obj, toJsonReplacer, pretty ? ' ' : null); + if (!isNumber(pretty)) { + pretty = pretty ? 2 : null; + } + return JSON.stringify(obj, toJsonReplacer, pretty); } @@ -1047,7 +1065,7 @@ function toJson(obj, pretty) { * Deserializes a JSON string. * * @param {string} json JSON string to deserialize. - * @returns {Object|Array|string|number} Deserialized thingy. + * @returns {Object|Array|string|number} Deserialized JSON string. */ function fromJson(json) { return isString(json) @@ -1220,7 +1238,7 @@ function getNgAttribute(element, ngAttr) { * {@link angular.bootstrap} instead. AngularJS applications cannot be nested within each other. * * You can specify an **AngularJS module** to be used as the root module for the application. This - * module will be loaded into the {@link auto.$injector} when the application is bootstrapped and + * module will be loaded into the {@link auto.$injector} when the application is bootstrapped. It * should contain the application code needed or have dependencies on other modules that will * contain the code. See {@link angular.module} for more information. * @@ -1228,7 +1246,7 @@ function getNgAttribute(element, ngAttr) { * document would not be compiled, the `AppController` would not be instantiated and the `{{ a+b }}` * would not be resolved to `3`. * - * `ngApp` is the easiest, and most common, way to bootstrap an application. + * `ngApp` is the easiest, and most common way to bootstrap an application. * @@ -1390,7 +1408,7 @@ function angularInit(element, bootstrap) { * @param {DOMElement} element DOM element which is the root of angular application. * @param {Array=} modules an array of modules to load into the application. * Each item in the array should be the name of a predefined module or a (DI annotated) - * function that will be invoked by the injector as a run block. + * function that will be invoked by the injector as a `config` block. * See: {@link angular.module modules} * @param {Object=} config an object for defining configuration options for the application. The * following keys are supported: @@ -1460,8 +1478,12 @@ function bootstrap(element, modules, config) { forEach(extraModules, function(module) { modules.push(module); }); - doBootstrap(); + return doBootstrap(); }; + + if (isFunction(angular.resumeDeferredBootstrap)) { + angular.resumeDeferredBootstrap(); + } } /** @@ -1488,7 +1510,12 @@ function reloadWithDebugInfo() { * @param {DOMElement} element DOM element which is the root of angular application. */ function getTestability(rootElement) { - return angular.element(rootElement).injector().get('$$testability'); + var injector = angular.element(rootElement).injector(); + if (!injector) { + throw ngMinErr('test', + 'no injector found for element argument to getTestability'); + } + return injector.get('$$testability'); } var SNAKE_CASE_REGEXP = /[A-Z]/g; @@ -2081,7 +2108,8 @@ function toDebugString(obj) { $TimeoutProvider, $$RAFProvider, $$AsyncCallbackProvider, - $WindowProvider + $WindowProvider, + $$jqLiteProvider */ @@ -2100,11 +2128,11 @@ function toDebugString(obj) { * - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat". */ var version = { - full: '1.3.4', // all of these placeholder strings will be replaced by grunt's + full: '1.3.15', // all of these placeholder strings will be replaced by grunt's major: 1, // package task minor: 3, - dot: 4, - codeName: 'highfalutin-petroglyph' + dot: 15, + codeName: 'locality-filtration' }; @@ -2234,12 +2262,24 @@ function publishExternalAPI(angular) { $timeout: $TimeoutProvider, $window: $WindowProvider, $$rAF: $$RAFProvider, - $$asyncCallback: $$AsyncCallbackProvider + $$asyncCallback: $$AsyncCallbackProvider, + $$jqLite: $$jqLiteProvider }); } ]); } +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Any commits to this file should be reviewed with security in mind. * + * Changes to this file can potentially create security vulnerabilities. * + * An approval from 2 Core members with history of modifying * + * this file is required. * + * * + * Does the change somehow allow for arbitrary javascript to be executed? * + * Or allows for someone to change the prototype of built-in objects? * + * Or gives undesired access to variables likes document or window? * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + /* global JQLitePrototype: true, addEventListenerFn: true, removeEventListenerFn: true, @@ -3244,6 +3284,27 @@ forEach({ JQLite.prototype.unbind = JQLite.prototype.off; }); + +// Provider for private $$jqLite service +function $$jqLiteProvider() { + this.$get = function $$jqLite() { + return extend(JQLite, { + hasClass: function(node, classes) { + if (node.attr) node = node[0]; + return jqLiteHasClass(node, classes); + }, + addClass: function(node, classes) { + if (node.attr) node = node[0]; + return jqLiteAddClass(node, classes); + }, + removeClass: function(node, classes) { + if (node.attr) node = node[0]; + return jqLiteRemoveClass(node, classes); + } + }); + }; +} + /** * Computes a hash of an 'obj'. * Hash of a: @@ -3496,6 +3557,7 @@ function annotate(fn, strictDi, name) { * Return an instance of the service. * * @param {string} name The name of the instance to retrieve. + * @param {string} caller An optional string to provide the origin of the function call for error messages. * @return {*} The instance. */ @@ -3946,14 +4008,17 @@ function createInjector(modulesToLoad, strictDi) { } }, providerInjector = (providerCache.$injector = - createInternalInjector(providerCache, function() { + createInternalInjector(providerCache, function(serviceName, caller) { + if (angular.isString(caller)) { + path.push(caller); + } throw $injectorMinErr('unpr', "Unknown provider: {0}", path.join(' <- ')); })), instanceCache = {}, instanceInjector = (instanceCache.$injector = - createInternalInjector(instanceCache, function(servicename) { - var provider = providerInjector.get(servicename + providerSuffix); - return instanceInjector.invoke(provider.$get, provider, undefined, servicename); + createInternalInjector(instanceCache, function(serviceName, caller) { + var provider = providerInjector.get(serviceName + providerSuffix, caller); + return instanceInjector.invoke(provider.$get, provider, undefined, serviceName); })); @@ -3988,7 +4053,7 @@ function createInjector(modulesToLoad, strictDi) { function enforceReturnValue(name, factory) { return function enforcedReturnValue() { - var result = instanceInjector.invoke(factory, this, undefined, name); + var result = instanceInjector.invoke(factory, this); if (isUndefined(result)) { throw $injectorMinErr('undef', "Provider '{0}' must return a value from $get factory method.", name); } @@ -4083,7 +4148,7 @@ function createInjector(modulesToLoad, strictDi) { function createInternalInjector(cache, factory) { - function getService(serviceName) { + function getService(serviceName, caller) { if (cache.hasOwnProperty(serviceName)) { if (cache[serviceName] === INSTANTIATING) { throw $injectorMinErr('cdep', 'Circular dependency found: {0}', @@ -4094,7 +4159,7 @@ function createInjector(modulesToLoad, strictDi) { try { path.unshift(serviceName); cache[serviceName] = INSTANTIATING; - return cache[serviceName] = factory(serviceName); + return cache[serviceName] = factory(serviceName, caller); } catch (err) { if (cache[serviceName] === INSTANTIATING) { delete cache[serviceName]; @@ -4113,7 +4178,7 @@ function createInjector(modulesToLoad, strictDi) { } var args = [], - $inject = annotate(fn, strictDi, serviceName), + $inject = createInjector.$$annotate(fn, strictDi, serviceName), length, i, key; @@ -4126,7 +4191,7 @@ function createInjector(modulesToLoad, strictDi) { args.push( locals && locals.hasOwnProperty(key) ? locals[key] - : getService(key) + : getService(key, serviceName) ); } if (isArray(fn)) { @@ -4142,7 +4207,7 @@ function createInjector(modulesToLoad, strictDi) { // Check if Type is annotated and use just the given function at n-1 as parameter // e.g. someModule.factory('greeter', ['$window', function(renamed$window) {}]); // Object creation: http://jsperf.com/create-constructor/2 - var instance = Object.create((isArray(Type) ? Type[Type.length - 1] : Type).prototype); + var instance = Object.create((isArray(Type) ? Type[Type.length - 1] : Type).prototype || null); var returnedValue = invoke(Type, instance, locals, serviceName); return isObject(returnedValue) || isFunction(returnedValue) ? returnedValue : instance; @@ -4152,7 +4217,7 @@ function createInjector(modulesToLoad, strictDi) { invoke: invoke, instantiate: instantiate, get: getService, - annotate: annotate, + annotate: createInjector.$$annotate, has: function(name) { return providerCache.hasOwnProperty(name + providerSuffix) || cache.hasOwnProperty(name); } @@ -4638,6 +4703,7 @@ var $AnimateProvider = ['$provide', function($provide) { * @return {Promise} the animation callback promise */ leave: function(element, options) { + applyStyles(element, options); element.remove(); return asyncPromise(); }, @@ -4870,6 +4936,11 @@ function Browser(window, document, $log, $sniffer) { } } + function getHash(url) { + var index = url.indexOf('#'); + return index === -1 ? '' : url.substr(index + 1); + } + /** * @private * Note: this method is used only by scenario runner @@ -4999,8 +5070,10 @@ function Browser(window, document, $log, $sniffer) { } if (replace) { location.replace(url); - } else { + } else if (!sameBase) { location.href = url; + } else { + location.hash = getHash(url); } } return self; @@ -5035,11 +5108,19 @@ function Browser(window, document, $log, $sniffer) { fireUrlChange(); } + function getCurrentState() { + try { + return history.state; + } catch (e) { + // MSIE can reportedly throw when there is no state (UNCONFIRMED). + } + } + // This variable should be used *only* inside the cacheState function. var lastCachedState = null; function cacheState() { // This should be the only place in $browser where `history.state` is read. - cachedState = window.history.state; + cachedState = getCurrentState(); cachedState = isUndefined(cachedState) ? null : cachedState; // Prevent callbacks fo fire twice if both hashchange & popstate were fired. @@ -5636,7 +5717,7 @@ function $CacheFactoryProvider() { * the document, but it must be a descendent of the {@link ng.$rootElement $rootElement} (IE, * element with ng-app attribute), otherwise the template will be ignored. * - * Adding via the $templateCache service: + * Adding via the `$templateCache` service: * * ```js * var myApp = angular.module('myApp', []); @@ -5664,6 +5745,17 @@ function $TemplateCacheProvider() { }]; } +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Any commits to this file should be reviewed with security in mind. * + * Changes to this file can potentially create security vulnerabilities. * + * An approval from 2 Core members with history of modifying * + * this file is required. * + * * + * Does the change somehow allow for arbitrary javascript to be executed? * + * Or allows for someone to change the prototype of built-in objects? * + * Or gives undesired access to variables likes document or window? * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + /* ! VARIABLE/FUNCTION NAMING CONVENTIONS THAT APPLY TO THIS FILE! * * DOM-related variables: @@ -5779,7 +5871,7 @@ function $TemplateCacheProvider() { * #### `multiElement` * When this property is set to true, the HTML compiler will collect DOM nodes between * nodes with the attributes `directive-name-start` and `directive-name-end`, and group them - * together as the directive elements. It is recomended that this feature be used on directives + * together as the directive elements. It is recommended that this feature be used on directives * which are not strictly behavioural (such as {@link ngClick}), and which * do not manipulate or replace child nodes (such as {@link ngInclude}). * @@ -5875,7 +5967,8 @@ function $TemplateCacheProvider() { * Require another directive and inject its controller as the fourth argument to the linking function. The * `require` takes a string name (or array of strings) of the directive(s) to pass in. If an array is used, the * injected argument will be an array in corresponding order. If no such directive can be - * found, or if the directive does not have a controller, then an error is raised. The name can be prefixed with: + * found, or if the directive does not have a controller, then an error is raised (unless no link function + * is specified, in which case error checking is skipped). The name can be prefixed with: * * * (no prefix) - Locate the required controller on the current element. Throw an error if not found. * * `?` - Attempt to locate the required controller or pass `null` to the `link` fn if not found. @@ -6467,7 +6560,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { * Retrieves or overrides the default regular expression that is used for whitelisting of safe * urls during a[href] sanitization. * - * The sanitization is a security measure aimed at prevent XSS attacks via html links. + * The sanitization is a security measure aimed at preventing XSS attacks via html links. * * Any url about to be assigned to a[href] via data-binding is first normalized and turned into * an absolute url. Afterwards, the url is matched against the `aHrefSanitizationWhitelist` @@ -6534,7 +6627,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { * * `ng-binding` CSS class * * `$binding` data property containing an array of the binding expressions * - * You may want to use this in production for a significant performance boost. See + * You may want to disable this in production for a significant performance boost. See * {@link guide/production#disabling-debug-data Disabling Debug Data} for more. * * The default value is true. @@ -6571,6 +6664,21 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { }; Attributes.prototype = { + /** + * @ngdoc method + * @name $compile.directive.Attributes#$normalize + * @kind function + * + * @description + * Converts an attribute name (e.g. dash/colon/underscore-delimited string, optionally prefixed with `x-` or + * `data-`) to its normalized, camelCase form. + * + * Also there is special case for Moz prefix starting with upper case letter. + * + * For further information check out the guide on {@link guide/directive#matching-directives Matching Directives} + * + * @param {string} name Name to normalize + */ $normalize: directiveNormalize, @@ -7069,7 +7177,10 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { // support ngAttr attribute binding ngAttrName = directiveNormalize(name); if (isNgAttr = NG_ATTR_BINDING.test(ngAttrName)) { - name = snake_case(ngAttrName.substr(6), '-'); + name = name.replace(PREFIX_REGEXP, '') + .substr(8).replace(/_(.)/g, function(match, letter) { + return letter.toUpperCase(); + }); } var directiveNName = ngAttrName.replace(/(Start|End)$/, ''); @@ -7096,6 +7207,10 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { // use class as directive className = node.className; + if (isObject(className)) { + // Maybe SVGAnimatedString + className = className.animVal; + } if (isString(className) && className !== '') { while (match = CLASS_DIRECTIVE_REGEXP.exec(className)) { nName = directiveNormalize(match[2]); @@ -7797,8 +7912,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { afterTemplateChildLinkFn, beforeTemplateCompileNode = $compileNode[0], origAsyncDirective = directives.shift(), - // The fact that we have to copy and patch the directive seems wrong! - derivedSyncDirective = extend({}, origAsyncDirective, { + derivedSyncDirective = inherit(origAsyncDirective, { templateUrl: null, transclude: null, replace: null, $$originalDirective: origAsyncDirective }), templateUrl = (isFunction(origAsyncDirective.templateUrl)) @@ -7981,7 +8095,10 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { function addAttrInterpolateDirective(node, directives, value, name, allOrNothing) { - var interpolateFn = $interpolate(value, true); + var trustedContext = getTrustedContext(node, name); + allOrNothing = ALL_OR_NOTHING_ATTRS[name] || allOrNothing; + + var interpolateFn = $interpolate(value, true, trustedContext, allOrNothing); // no interpolation found -> ignore if (!interpolateFn) return; @@ -8006,16 +8123,16 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { "ng- versions (such as ng-click instead of onclick) instead."); } - // If the attribute was removed, then we are done - if (!attr[name]) { - return; + // If the attribute has changed since last $interpolate()ed + var newValue = attr[name]; + if (newValue !== value) { + // we need to interpolate again since the attribute value has been updated + // (e.g. by another directive's compile function) + // ensure unset/empty values make interpolateFn falsy + interpolateFn = newValue && $interpolate(newValue, true, trustedContext, allOrNothing); + value = newValue; } - // we need to interpolate again, in case the attribute value has been updated - // (e.g. by another directive's compile function) - interpolateFn = $interpolate(attr[name], true, getTrustedContext(node, name), - ALL_OR_NOTHING_ATTRS[name] || allOrNothing); - // if attribute was updated so that there is no interpolation going on we don't want to // register any observers if (!interpolateFn) return; @@ -8149,13 +8266,6 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { var PREFIX_REGEXP = /^((?:x|data)[\:\-_])/i; /** * Converts all accepted directives format into proper directive name. - * All of these will become 'myDirective': - * my:Directive - * my-directive - * x-my-directive - * data-my:directive - * - * Also there is special case for Moz prefix starting with upper case letter. * @param name Name to normalize */ function directiveNormalize(name) { @@ -8255,6 +8365,8 @@ function removeComments(jqNodes) { return jqNodes; } +var $controllerMinErr = minErr('$controller'); + /** * @ngdoc provider * @name $controllerProvider @@ -8342,7 +8454,12 @@ function $ControllerProvider() { } if (isString(expression)) { - match = expression.match(CNTRL_REG), + match = expression.match(CNTRL_REG); + if (!match) { + throw $controllerMinErr('ctrlfmt', + "Badly formed controller string '{0}'. " + + "Must match `__name__ as __id__` or `__name__`.", expression); + } constructor = match[1], identifier = identifier || match[3]; expression = controllers.hasOwnProperty(constructor) @@ -8366,7 +8483,7 @@ function $ControllerProvider() { // Object creation: http://jsperf.com/create-constructor/2 var controllerPrototype = (isArray(expression) ? expression[expression.length - 1] : expression).prototype; - instance = Object.create(controllerPrototype); + instance = Object.create(controllerPrototype || null); if (identifier) { addIdentifier(locals, identifier, instance, constructor || expression.name); @@ -8483,23 +8600,34 @@ function $ExceptionHandlerProvider() { var APPLICATION_JSON = 'application/json'; var CONTENT_TYPE_APPLICATION_JSON = {'Content-Type': APPLICATION_JSON + ';charset=utf-8'}; -var JSON_START = /^\s*(\[|\{[^\{])/; -var JSON_END = /[\}\]]\s*$/; +var JSON_START = /^\[|^\{(?!\{)/; +var JSON_ENDS = { + '[': /]$/, + '{': /}$/ +}; var JSON_PROTECTION_PREFIX = /^\)\]\}',?\n/; function defaultHttpResponseTransform(data, headers) { if (isString(data)) { - // strip json vulnerability protection prefix - data = data.replace(JSON_PROTECTION_PREFIX, ''); - var contentType = headers('Content-Type'); - if ((contentType && contentType.indexOf(APPLICATION_JSON) === 0 && data.trim()) || - (JSON_START.test(data) && JSON_END.test(data))) { - data = fromJson(data); + // Strip json vulnerability protection prefix and trim whitespace + var tempData = data.replace(JSON_PROTECTION_PREFIX, '').trim(); + + if (tempData) { + var contentType = headers('Content-Type'); + if ((contentType && (contentType.indexOf(APPLICATION_JSON) === 0)) || isJsonLike(tempData)) { + data = fromJson(tempData); + } } } + return data; } +function isJsonLike(str) { + var jsonStart = str.match(JSON_START); + return jsonStart && JSON_ENDS[jsonStart[0]].test(str); +} + /** * Parse headers into key value object * @@ -8562,16 +8690,17 @@ function headersGetter(headers) { * This function is used for both request and response transforming * * @param {*} data Data to transform. - * @param {function(string=)} headers Http headers getter fn. + * @param {function(string=)} headers HTTP headers getter fn. + * @param {number} status HTTP status code of the response. * @param {(Function|Array.)} fns Function or an array of functions. * @returns {*} Transformed data. */ -function transformData(data, headers, fns) { +function transformData(data, headers, status, fns) { if (isFunction(fns)) - return fns(data, headers); + return fns(data, headers, status); forEach(fns, function(fn) { - data = fn(data, headers); + data = fn(data, headers, status); }); return data; @@ -8623,7 +8752,7 @@ function $HttpProvider() { // transform outgoing request data transformRequest: [function(d) { - return isObject(d) && !isFile(d) && !isBlob(d) ? toJson(d) : d; + return isObject(d) && !isFile(d) && !isBlob(d) && !isFormData(d) ? toJson(d) : d; }], // default headers @@ -8850,7 +8979,7 @@ function $HttpProvider() { * * Both requests and responses can be transformed using transformation functions: `transformRequest` * and `transformResponse`. These properties can be a single function that returns - * the transformed value (`{function(data, headersGetter)`) or an array of such transformation functions, + * the transformed value (`function(data, headersGetter, status)`) or an array of such transformation functions, * which allows you to `push` or `unshift` a new transformation function into the transformation chain. * * ### Default Transformations @@ -9091,12 +9220,14 @@ function $HttpProvider() { * `{function(data, headersGetter)|Array.}` – * transform function or an array of such functions. The transform function takes the http * request body and headers and returns its transformed (typically serialized) version. - * See {@link #overriding-the-default-transformations-per-request Overriding the Default Transformations} + * See {@link ng.$http#overriding-the-default-transformations-per-request + * Overriding the Default Transformations} * - **transformResponse** – - * `{function(data, headersGetter)|Array.}` – + * `{function(data, headersGetter, status)|Array.}` – * transform function or an array of such functions. The transform function takes the http - * response body and headers and returns its transformed (typically deserialized) version. - * See {@link #overriding-the-default-transformations-per-request Overriding the Default Transformations} + * response body, headers and status and returns its transformed (typically deserialized) version. + * See {@link ng.$http#overriding-the-default-transformations-per-request + * Overriding the Default Transformations} * - **cache** – `{boolean|Cache}` – If true, a default $http cache will be used to cache the * GET request, otherwise if a cache instance built with * {@link ng.$cacheFactory $cacheFactory}, this cache will be used for @@ -9217,24 +9348,23 @@ function $HttpProvider() { */ function $http(requestConfig) { - var config = { - method: 'get', - transformRequest: defaults.transformRequest, - transformResponse: defaults.transformResponse - }; - var headers = mergeHeaders(requestConfig); if (!angular.isObject(requestConfig)) { throw minErr('$http')('badreq', 'Http request configuration must be an object. Received: {0}', requestConfig); } - extend(config, requestConfig); - config.headers = headers; + var config = extend({ + method: 'get', + transformRequest: defaults.transformRequest, + transformResponse: defaults.transformResponse + }, requestConfig); + + config.headers = mergeHeaders(requestConfig); config.method = uppercase(config.method); var serverRequest = function(config) { - headers = config.headers; - var reqData = transformData(config.data, headersGetter(headers), config.transformRequest); + var headers = config.headers; + var reqData = transformData(config.data, headersGetter(headers), undefined, config.transformRequest); // strip content-type if data is undefined if (isUndefined(reqData)) { @@ -9250,7 +9380,7 @@ function $HttpProvider() { } // send request - return sendReq(config, reqData, headers).then(transformResponse, transformResponse); + return sendReq(config, reqData).then(transformResponse, transformResponse); }; var chain = [serverRequest, undefined]; @@ -9295,13 +9425,30 @@ function $HttpProvider() { if (!response.data) { resp.data = response.data; } else { - resp.data = transformData(response.data, response.headers, config.transformResponse); + resp.data = transformData(response.data, response.headers, response.status, config.transformResponse); } return (isSuccess(response.status)) ? resp : $q.reject(resp); } + function executeHeaderFns(headers) { + var headerContent, processedHeaders = {}; + + forEach(headers, function(headerFn, header) { + if (isFunction(headerFn)) { + headerContent = headerFn(); + if (headerContent != null) { + processedHeaders[header] = headerContent; + } + } else { + processedHeaders[header] = headerFn; + } + }); + + return processedHeaders; + } + function mergeHeaders(config) { var defHeaders = defaults.headers, reqHeaders = extend({}, config.headers), @@ -9324,23 +9471,7 @@ function $HttpProvider() { } // execute if header value is a function for merged headers - execHeaders(reqHeaders); - return reqHeaders; - - function execHeaders(headers) { - var headerContent; - - forEach(headers, function(headerFn, header) { - if (isFunction(headerFn)) { - headerContent = headerFn(); - if (headerContent != null) { - headers[header] = headerContent; - } else { - delete headers[header]; - } - } - }); - } + return executeHeaderFns(reqHeaders); } } @@ -9483,11 +9614,12 @@ function $HttpProvider() { * !!! ACCESSES CLOSURE VARS: * $httpBackend, defaults, $log, $rootScope, defaultCache, $http.pendingRequests */ - function sendReq(config, reqData, reqHeaders) { + function sendReq(config, reqData) { var deferred = $q.defer(), promise = deferred.promise, cache, cachedResp, + reqHeaders = config.headers, url = buildUrl(config.url, config.params); $http.pendingRequests.push(config); @@ -9506,8 +9638,7 @@ function $HttpProvider() { if (isDefined(cachedResp)) { if (isPromiseLike(cachedResp)) { // cached request has already been sent, but there is no response yet - cachedResp.then(removePendingReq, removePendingReq); - return cachedResp; + cachedResp.then(resolvePromiseWithResult, resolvePromiseWithResult); } else { // serving from cache if (isArray(cachedResp)) { @@ -9585,6 +9716,9 @@ function $HttpProvider() { }); } + function resolvePromiseWithResult(result) { + resolvePromise(result.data, result.status, shallowCopy(result.headers()), result.statusText); + } function removePendingReq() { var idx = $http.pendingRequests.indexOf(config); @@ -9746,7 +9880,9 @@ function createHttpBackend($browser, createXhr, $browserDefer, callbacks, rawDoc function completeRequest(callback, status, response, headersString, statusText) { // cancel timeout and subsequent timeout promise resolution - timeoutId && $browserDefer.cancel(timeoutId); + if (timeoutId !== undefined) { + $browserDefer.cancel(timeoutId); + } jsonpDone = xhr = null; callback(status, response, headersString, statusText); @@ -10194,33 +10330,33 @@ function $IntervalProvider() { * // Don't start a new fight if we are already fighting * if ( angular.isDefined(stop) ) return; * - * stop = $interval(function() { - * if ($scope.blood_1 > 0 && $scope.blood_2 > 0) { - * $scope.blood_1 = $scope.blood_1 - 3; - * $scope.blood_2 = $scope.blood_2 - 4; - * } else { - * $scope.stopFight(); - * } - * }, 100); - * }; + * stop = $interval(function() { + * if ($scope.blood_1 > 0 && $scope.blood_2 > 0) { + * $scope.blood_1 = $scope.blood_1 - 3; + * $scope.blood_2 = $scope.blood_2 - 4; + * } else { + * $scope.stopFight(); + * } + * }, 100); + * }; * - * $scope.stopFight = function() { - * if (angular.isDefined(stop)) { - * $interval.cancel(stop); - * stop = undefined; - * } - * }; + * $scope.stopFight = function() { + * if (angular.isDefined(stop)) { + * $interval.cancel(stop); + * stop = undefined; + * } + * }; * - * $scope.resetFight = function() { - * $scope.blood_1 = 100; - * $scope.blood_2 = 120; - * }; + * $scope.resetFight = function() { + * $scope.blood_1 = 100; + * $scope.blood_2 = 120; + * }; * - * $scope.$on('$destroy', function() { - * // Make sure that the interval is destroyed too - * $scope.stopFight(); - * }); - * }]) + * $scope.$on('$destroy', function() { + * // Make sure that the interval is destroyed too + * $scope.stopFight(); + * }); + * }]) * // Register the 'myCurrentTime' directive factory method. * // We inject $interval and dateFilter service since the factory method is DI. * .directive('myCurrentTime', ['$interval', 'dateFilter', @@ -10382,7 +10518,15 @@ function $LocaleProvider() { mediumDate: 'MMM d, y', shortDate: 'M/d/yy', mediumTime: 'h:mm:ss a', - shortTime: 'h:mm a' + shortTime: 'h:mm a', + ERANAMES: [ + "Before Christ", + "Anno Domini" + ], + ERAS: [ + "BC", + "AD" + ] }, pluralCat: function(num) { @@ -10463,6 +10607,10 @@ function stripHash(url) { return index == -1 ? url : url.substr(0, index); } +function trimEmptyHash(url) { + return url.replace(/(#.+)|#$/, '$1'); +} + function stripFile(url) { return url.substr(0, stripHash(url).lastIndexOf('/') + 1); @@ -10574,16 +10722,25 @@ function LocationHashbangUrl(appBase, hashPrefix) { */ this.$$parse = function(url) { var withoutBaseUrl = beginsWith(appBase, url) || beginsWith(appBaseNoFile, url); - var withoutHashUrl = withoutBaseUrl.charAt(0) == '#' - ? beginsWith(hashPrefix, withoutBaseUrl) - : (this.$$html5) - ? withoutBaseUrl - : ''; + var withoutHashUrl; + + if (withoutBaseUrl.charAt(0) === '#') { + + // The rest of the url starts with a hash so we have + // got either a hashbang path or a plain hash fragment + withoutHashUrl = beginsWith(hashPrefix, withoutBaseUrl); + if (isUndefined(withoutHashUrl)) { + // There was no hashbang prefix so we just have a hash fragment + withoutHashUrl = withoutBaseUrl; + } - if (!isString(withoutHashUrl)) { - throw $locationMinErr('ihshprfx', 'Invalid url "{0}", missing hash prefix "{1}".', url, - hashPrefix); + } else { + // There was no hashbang path nor hash fragment: + // If we are in HTML5 mode we use what is left as the path; + // Otherwise we ignore what is left + withoutHashUrl = this.$$html5 ? withoutBaseUrl : ''; } + parseAppUrl(withoutHashUrl, this); this.$$path = removeWindowsDriveName(this.$$path, withoutHashUrl, appBase); @@ -10946,7 +11103,7 @@ var locationPrototype = { * * * ```js - * // given url http://example.com/some/path?foo=bar&baz=xoxo#hashValue + * // given url http://example.com/#/some/path?foo=bar&baz=xoxo#hashValue * var hash = $location.hash(); * // => "hashValue" * ``` @@ -11170,8 +11327,8 @@ function $LocationProvider() { * @param {string=} oldState History state object that was before it was changed. */ - this.$get = ['$rootScope', '$browser', '$sniffer', '$rootElement', - function($rootScope, $browser, $sniffer, $rootElement) { + this.$get = ['$rootScope', '$browser', '$sniffer', '$rootElement', '$window', + function($rootScope, $browser, $sniffer, $rootElement, $window) { var $location, LocationMode, baseHref = $browser.baseHref(), // if base[href] is undefined, it defaults to '' @@ -11219,7 +11376,7 @@ function $LocationProvider() { // TODO(vojta): rewrite link when opening in new tab/window (in legacy browser) // currently we open nice url link and redirect then - if (!html5Mode.rewriteLinks || event.ctrlKey || event.metaKey || event.which == 2) return; + if (!html5Mode.rewriteLinks || event.ctrlKey || event.metaKey || event.shiftKey || event.which == 2 || event.button == 2) return; var elm = jqLite(event.target); @@ -11253,7 +11410,7 @@ function $LocationProvider() { if ($location.absUrl() != $browser.url()) { $rootScope.$apply(); // hack to work around FF6 bug 684208 when scenario runner clicks on links - window.angular['ff-684208-preventDefault'] = true; + $window.angular['ff-684208-preventDefault'] = true; } } } @@ -11261,7 +11418,7 @@ function $LocationProvider() { // rewrite hashbang url <> html5 url - if ($location.absUrl() != initialUrl) { + if (trimEmptyHash($location.absUrl()) != trimEmptyHash(initialUrl)) { $browser.url($location.absUrl(), true); } @@ -11298,10 +11455,11 @@ function $LocationProvider() { // update browser $rootScope.$watch(function $locationWatch() { - var oldUrl = $browser.url(); + var oldUrl = trimEmptyHash($browser.url()); + var newUrl = trimEmptyHash($location.absUrl()); var oldState = $browser.state(); var currentReplace = $location.$$replace; - var urlOrStateChanged = oldUrl !== $location.absUrl() || + var urlOrStateChanged = oldUrl !== newUrl || ($location.$$html5 && $sniffer.history && oldState !== $location.$$state); if (initializing || urlOrStateChanged) { @@ -11376,6 +11534,7 @@ function $LocationProvider() { +
    @@ -11506,6 +11665,17 @@ function $LogProvider() { }]; } +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Any commits to this file should be reviewed with security in mind. * + * Changes to this file can potentially create security vulnerabilities. * + * An approval from 2 Core members with history of modifying * + * this file is required. * + * * + * Does the change somehow allow for arbitrary javascript to be executed? * + * Or allows for someone to change the prototype of built-in objects? * + * Or gives undesired access to variables likes document or window? * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + var $parseMinErr = minErr('$parse'); // Sandboxing Angular Expressions @@ -11868,6 +12038,8 @@ Parser.prototype = { primary = this.arrayDeclaration(); } else if (this.expect('{')) { primary = this.object(); + } else if (this.peek().identifier && this.peek().text in CONSTANTS) { + primary = CONSTANTS[this.consume().text]; } else if (this.peek().identifier) { primary = this.identifier(); } else if (this.peek().constant) { @@ -11970,7 +12142,7 @@ Parser.prototype = { id += this.consume().text + this.consume().text; } - return CONSTANTS[id] || getterFn(id, this.options, this.text); + return getterFn(id, this.options, this.text); }, constant: function() { @@ -12104,8 +12276,8 @@ Parser.prototype = { logicalAND: function() { var left = this.equality(); var token; - if ((token = this.expect('&&'))) { - left = this.binaryFn(left, token.text, this.logicalAND(), true); + while ((token = this.expect('&&'))) { + left = this.binaryFn(left, token.text, this.equality(), true); } return left; }, @@ -12113,8 +12285,8 @@ Parser.prototype = { equality: function() { var left = this.relational(); var token; - if ((token = this.expect('==','!=','===','!=='))) { - left = this.binaryFn(left, token.text, this.equality()); + while ((token = this.expect('==','!=','===','!=='))) { + left = this.binaryFn(left, token.text, this.relational()); } return left; }, @@ -12122,8 +12294,8 @@ Parser.prototype = { relational: function() { var left = this.additive(); var token; - if ((token = this.expect('<', '>', '<=', '>='))) { - left = this.binaryFn(left, token.text, this.relational()); + while ((token = this.expect('<', '>', '<=', '>='))) { + left = this.binaryFn(left, token.text, this.additive()); } return left; }, @@ -12160,17 +12332,16 @@ Parser.prototype = { }, fieldAccess: function(object) { - var expression = this.text; - var field = this.consume().text; - var getter = getterFn(field, this.options, expression); + var getter = this.identifier(); return extend(function $parseFieldAccess(scope, locals, self) { - return getter(self || object(scope, locals)); + var o = self || object(scope, locals); + return (o == null) ? undefined : getter(o); }, { assign: function(scope, value, locals) { var o = object(scope, locals); - if (!o) object.assign(scope, o = {}); - return setter(o, field, value, expression); + if (!o) object.assign(scope, o = {}, locals); + return getter.assign(o, value); } }); }, @@ -12195,7 +12366,7 @@ Parser.prototype = { var key = ensureSafeMemberName(indexFn(self, locals), expression); // prevent overwriting of Function.constructor which would break ensureSafeObject check var o = ensureSafeObject(obj(self, locals), expression); - if (!o) obj.assign(self, o = {}); + if (!o) obj.assign(self, o = {}, locals); return o[key] = value; } }); @@ -12215,7 +12386,7 @@ Parser.prototype = { var args = argsFn.length ? [] : null; return function $parseFunctionCall(scope, locals) { - var context = contextGetter ? contextGetter(scope, locals) : scope; + var context = contextGetter ? contextGetter(scope, locals) : isDefined(contextGetter) ? undefined : scope; var fn = fnGetter(scope, locals, context) || noop; if (args) { @@ -12228,13 +12399,18 @@ Parser.prototype = { ensureSafeObject(context, expressionText); ensureSafeFunction(fn, expressionText); - // IE stupidity! (IE doesn't have apply for some native functions) + // IE doesn't have apply for some native functions var v = fn.apply ? fn.apply(context, args) : fn(args[0], args[1], args[2], args[3], args[4]); + if (args) { + // Free-up the memory (arguments of the last function call). + args.length = 0; + } + return ensureSafeObject(v, expressionText); - }; + }; }, // This is used with json array declaration @@ -12305,18 +12481,19 @@ Parser.prototype = { // Parser helper functions ////////////////////////////////////////////////// -function setter(obj, path, setValue, fullExp) { +function setter(obj, locals, path, setValue, fullExp) { ensureSafeObject(obj, fullExp); + ensureSafeObject(locals, fullExp); var element = path.split('.'), key; for (var i = 0; element.length > 1; i++) { key = ensureSafeMemberName(element.shift(), fullExp); - var propertyObj = ensureSafeObject(obj[key], fullExp); + var propertyObj = (i === 0 && locals && locals[key]) || obj[key]; if (!propertyObj) { propertyObj = {}; obj[key] = propertyObj; } - obj = propertyObj; + obj = ensureSafeObject(propertyObj, fullExp); } key = ensureSafeMemberName(element.shift(), fullExp); ensureSafeObject(obj[key], fullExp); @@ -12443,8 +12620,8 @@ function getterFn(path, options, fullExp) { } fn.sharedGetter = true; - fn.assign = function(self, value) { - return setter(self, path, value, path); + fn.assign = function(self, value, locals) { + return setter(self, locals, path, value, path); }; getterFnCache[path] = fn; return fn; @@ -13103,8 +13280,7 @@ function qFactory(nextTick, exceptionHandler) { 'qcycle', "Expected promise to be resolved with value other than itself '{0}'", val)); - } - else { + } else { this.$$resolve(val); } @@ -13328,12 +13504,10 @@ function qFactory(nextTick, exceptionHandler) { function $$RAFProvider() { //rAF this.$get = ['$window', '$timeout', function($window, $timeout) { var requestAnimationFrame = $window.requestAnimationFrame || - $window.webkitRequestAnimationFrame || - $window.mozRequestAnimationFrame; + $window.webkitRequestAnimationFrame; var cancelAnimationFrame = $window.cancelAnimationFrame || $window.webkitCancelAnimationFrame || - $window.mozCancelAnimationFrame || $window.webkitCancelRequestAnimationFrame; var rafSupported = !!requestAnimationFrame; @@ -13437,9 +13611,27 @@ function $RootScopeProvider() { return TTL; }; + function createChildScopeClass(parent) { + function ChildScope() { + this.$$watchers = this.$$nextSibling = + this.$$childHead = this.$$childTail = null; + this.$$listeners = {}; + this.$$listenerCount = {}; + this.$$watchersCount = 0; + this.$id = nextUid(); + this.$$ChildScope = null; + } + ChildScope.prototype = parent; + return ChildScope; + } + this.$get = ['$injector', '$exceptionHandler', '$parse', '$browser', function($injector, $exceptionHandler, $parse, $browser) { + function destroyChildScope($event) { + $event.currentScope.$$destroyed = true; + } + /** * @ngdoc type * @name $rootScope.Scope @@ -13462,7 +13654,6 @@ function $RootScopeProvider() { var child = parent.$new(); parent.salutation = "Hello"; - child.name = "World"; expect(child.salutation).toEqual('Hello'); child.salutation = "Welcome"; @@ -13563,15 +13754,7 @@ function $RootScopeProvider() { // Only create a child scope class if somebody asks for one, // but cache it to allow the VM to optimize lookups. if (!this.$$ChildScope) { - this.$$ChildScope = function ChildScope() { - this.$$watchers = this.$$nextSibling = - this.$$childHead = this.$$childTail = null; - this.$$listeners = {}; - this.$$listenerCount = {}; - this.$id = nextUid(); - this.$$ChildScope = null; - }; - this.$$ChildScope.prototype = this; + this.$$ChildScope = createChildScopeClass(this); } child = new this.$$ChildScope(); } @@ -13589,13 +13772,9 @@ function $RootScopeProvider() { // prototypically. In all other cases, this property needs to be set // when the parent scope is destroyed. // The listener needs to be added after the parent is set - if (isolate || parent != this) child.$on('$destroy', destroyChild); + if (isolate || parent != this) child.$on('$destroy', destroyChildScope); return child; - - function destroyChild() { - child.$$destroyed = true; - } }, /** @@ -14100,7 +14279,7 @@ function $RootScopeProvider() { while (asyncQueue.length) { try { asyncTask = asyncQueue.shift(); - asyncTask.scope.$eval(asyncTask.expression); + asyncTask.scope.$eval(asyncTask.expression, asyncTask.locals); } catch (e) { $exceptionHandler(e); } @@ -14315,8 +14494,9 @@ function $RootScopeProvider() { * - `string`: execute using the rules as defined in {@link guide/expression expression}. * - `function(scope)`: execute the function with the current `scope` parameter. * + * @param {(object)=} locals Local variables object, useful for overriding values in scope. */ - $evalAsync: function(expr) { + $evalAsync: function(expr, locals) { // if we are outside of an $digest loop and this is the first time we are scheduling async // task also schedule async auto-flush if (!$rootScope.$$phase && !asyncQueue.length) { @@ -14327,7 +14507,7 @@ function $RootScopeProvider() { }); } - asyncQueue.push({scope: this, expression: expr}); + asyncQueue.push({scope: this, expression: expr, locals: locals}); }, $$postDigest: function(fn) { @@ -14402,7 +14582,7 @@ function $RootScopeProvider() { * @kind function * * @description - * Schedule the invokation of $apply to occur at a later time. The actual time difference + * Schedule the invocation of $apply to occur at a later time. The actual time difference * varies across browsers, but is typically around ~10 milliseconds. * * This can be used to queue up multiple expressions which need to be evaluated in the same @@ -14755,6 +14935,17 @@ function $$SanitizeUriProvider() { }; } +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Any commits to this file should be reviewed with security in mind. * + * Changes to this file can potentially create security vulnerabilities. * + * An approval from 2 Core members with history of modifying * + * this file is required. * + * * + * Does the change somehow allow for arbitrary javascript to be executed? * + * Or allows for someone to change the prototype of built-in objects? * + * Or gives undesired access to variables likes document or window? * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + var $sceMinErr = minErr('$sce'); var SCE_CONTEXTS = { @@ -15870,7 +16061,9 @@ function $SnifferProvider() { // IE9 implements 'input' event it's so fubared that we rather pretend that it doesn't have // it. In particular the event is not fired when backspace or delete key are pressed or // when cut operation is performed. - if (event == 'input' && msie == 9) return false; + // IE10+ implements 'input' event but it erroneously fires under various situations, + // e.g. when placeholder changes, or a form is focused. + if (event === 'input' && msie <= 11) return false; if (isUndefined(eventSupport[event])) { var divElm = document.createElement('div'); @@ -15897,7 +16090,7 @@ var $compileMinErr = minErr('$compile'); * @description * The `$templateRequest` service downloads the provided template using `$http` and, upon success, * stores the contents inside of `$templateCache`. If the HTTP request fails or the response data - * of the HTTP request is empty then a `$compile` error will be thrown (the exception can be thwarted + * of the HTTP request is empty, a `$compile` error will be thrown (the exception can be thwarted * by setting the 2nd parameter of the function to true). * * @param {string} tpl The HTTP request template URL @@ -15910,20 +16103,14 @@ var $compileMinErr = minErr('$compile'); function $TemplateRequestProvider() { this.$get = ['$templateCache', '$http', '$q', function($templateCache, $http, $q) { function handleRequestFn(tpl, ignoreRequestError) { - var self = handleRequestFn; - self.totalPendingRequests++; + handleRequestFn.totalPendingRequests++; var transformResponse = $http.defaults && $http.defaults.transformResponse; if (isArray(transformResponse)) { - var original = transformResponse; - transformResponse = []; - for (var i = 0; i < original.length; ++i) { - var transformer = original[i]; - if (transformer !== defaultHttpResponseTransform) { - transformResponse.push(transformer); - } - } + transformResponse = transformResponse.filter(function(transformer) { + return transformer !== defaultHttpResponseTransform; + }); } else if (transformResponse === defaultHttpResponseTransform) { transformResponse = null; } @@ -15934,19 +16121,18 @@ function $TemplateRequestProvider() { }; return $http.get(tpl, httpOptions) + ['finally'](function() { + handleRequestFn.totalPendingRequests--; + }) .then(function(response) { - var html = response.data; - self.totalPendingRequests--; - $templateCache.put(tpl, html); - return html; + return response.data; }, handleError); - function handleError() { - self.totalPendingRequests--; + function handleError(resp) { if (!ignoreRequestError) { throw $compileMinErr('tpload', 'Failed to load template: {0}', tpl); } - return $q.reject(); + return $q.reject(resp); } } @@ -16464,19 +16650,26 @@ function $FilterProvider($provide) { * * Can be one of: * - * - `string`: The string is evaluated as an expression and the resulting value is used for substring match against - * the contents of the `array`. All strings or objects with string properties in `array` that contain this string - * will be returned. The predicate can be negated by prefixing the string with `!`. + * - `string`: The string is used for matching against the contents of the `array`. All strings or + * objects with string properties in `array` that match this string will be returned. This also + * applies to nested object properties. + * The predicate can be negated by prefixing the string with `!`. * * - `Object`: A pattern object can be used to filter specific properties on objects contained * by `array`. For example `{name:"M", phone:"1"}` predicate will return an array of items * which have property `name` containing "M" and property `phone` containing "1". A special * property name `$` can be used (as in `{$:"text"}`) to accept a match against any - * property of the object. That's equivalent to the simple substring match with a `string` - * as described above. The predicate can be negated by prefixing the string with `!`. - * For Example `{name: "!M"}` predicate will return an array of items which have property `name` + * property of the object or its nested object properties. That's equivalent to the simple + * substring match with a `string` as described above. The predicate can be negated by prefixing + * the string with `!`. + * For example `{name: "!M"}` predicate will return an array of items which have property `name` * not containing "M". * + * Note that a named property will match properties on the same level only, while the special + * `$` property will match properties on the same level or deeper. E.g. an array item like + * `{name: {first: 'John', last: 'Doe'}}` will **not** be matched by `{name: 'John'}`, but + * **will** be matched by `{$: 'John'}`. + * * - `function(value, index)`: A predicate function can be used to write arbitrary filters. The * function is called for each element of `array`. The final result is an array of those * elements that the predicate returned true for. @@ -16489,10 +16682,10 @@ function $FilterProvider($provide) { * * - `function(actual, expected)`: * The function will be given the object value and the predicate value to compare and - * should return true if the item should be included in filtered result. + * should return true if both values should be considered equal. * - * - `true`: A shorthand for `function(actual, expected) { return angular.equals(expected, actual)}`. - * this is essentially strict comparison of expected and actual. + * - `true`: A shorthand for `function(actual, expected) { return angular.equals(actual, expected)}`. + * This is essentially strict comparison of expected and actual. * * - `false|undefined`: A short hand for a function which will look for a substring match in case * insensitive way. @@ -16569,106 +16762,107 @@ function filterFilter() { return function(array, expression, comparator) { if (!isArray(array)) return array; - var comparatorType = typeof(comparator), - predicates = []; - - predicates.check = function(value, index) { - for (var j = 0; j < predicates.length; j++) { - if (!predicates[j](value, index)) { - return false; - } - } - return true; - }; - - if (comparatorType !== 'function') { - if (comparatorType === 'boolean' && comparator) { - comparator = function(obj, text) { - return angular.equals(obj, text); - }; - } else { - comparator = function(obj, text) { - if (obj && text && typeof obj === 'object' && typeof text === 'object') { - for (var objKey in obj) { - if (objKey.charAt(0) !== '$' && hasOwnProperty.call(obj, objKey) && - comparator(obj[objKey], text[objKey])) { - return true; - } - } - return false; - } - text = ('' + text).toLowerCase(); - return ('' + obj).toLowerCase().indexOf(text) > -1; - }; - } - } + var predicateFn; + var matchAgainstAnyProp; - var search = function(obj, text) { - if (typeof text === 'string' && text.charAt(0) === '!') { - return !search(obj, text.substr(1)); - } - switch (typeof obj) { - case 'boolean': - case 'number': - case 'string': - return comparator(obj, text); - case 'object': - switch (typeof text) { - case 'object': - return comparator(obj, text); - default: - for (var objKey in obj) { - if (objKey.charAt(0) !== '$' && search(obj[objKey], text)) { - return true; - } - } - break; - } - return false; - case 'array': - for (var i = 0; i < obj.length; i++) { - if (search(obj[i], text)) { - return true; - } - } - return false; - default: - return false; - } - }; switch (typeof expression) { + case 'function': + predicateFn = expression; + break; case 'boolean': case 'number': case 'string': - // Set up expression object and fall through - expression = {$:expression}; - // jshint -W086 + matchAgainstAnyProp = true; + //jshint -W086 case 'object': - // jshint +W086 - for (var key in expression) { - (function(path) { - if (typeof expression[path] === 'undefined') return; - predicates.push(function(value) { - return search(path == '$' ? value : (value && value[path]), expression[path]); - }); - })(key); - } - break; - case 'function': - predicates.push(expression); + //jshint +W086 + predicateFn = createPredicateFn(expression, comparator, matchAgainstAnyProp); break; default: return array; } - var filtered = []; - for (var j = 0; j < array.length; j++) { - var value = array[j]; - if (predicates.check(value, j)) { - filtered.push(value); + + return array.filter(predicateFn); + }; +} + +// Helper functions for `filterFilter` +function createPredicateFn(expression, comparator, matchAgainstAnyProp) { + var shouldMatchPrimitives = isObject(expression) && ('$' in expression); + var predicateFn; + + if (comparator === true) { + comparator = equals; + } else if (!isFunction(comparator)) { + comparator = function(actual, expected) { + if (isObject(actual) || isObject(expected)) { + // Prevent an object to be considered equal to a string like `'[object'` + return false; } + + actual = lowercase('' + actual); + expected = lowercase('' + expected); + return actual.indexOf(expected) !== -1; + }; + } + + predicateFn = function(item) { + if (shouldMatchPrimitives && !isObject(item)) { + return deepCompare(item, expression.$, comparator, false); } - return filtered; + return deepCompare(item, expression, comparator, matchAgainstAnyProp); }; + + return predicateFn; +} + +function deepCompare(actual, expected, comparator, matchAgainstAnyProp, dontMatchWholeObject) { + var actualType = (actual !== null) ? typeof actual : 'null'; + var expectedType = (expected !== null) ? typeof expected : 'null'; + + if ((expectedType === 'string') && (expected.charAt(0) === '!')) { + return !deepCompare(actual, expected.substring(1), comparator, matchAgainstAnyProp); + } else if (isArray(actual)) { + // In case `actual` is an array, consider it a match + // if ANY of it's items matches `expected` + return actual.some(function(item) { + return deepCompare(item, expected, comparator, matchAgainstAnyProp); + }); + } + + switch (actualType) { + case 'object': + var key; + if (matchAgainstAnyProp) { + for (key in actual) { + if ((key.charAt(0) !== '$') && deepCompare(actual[key], expected, comparator, true)) { + return true; + } + } + return dontMatchWholeObject ? false : deepCompare(actual, expected, comparator, false); + } else if (expectedType === 'object') { + for (key in expected) { + var expectedVal = expected[key]; + if (isFunction(expectedVal) || isUndefined(expectedVal)) { + continue; + } + + var matchAnyProperty = key === '$'; + var actualVal = matchAnyProperty ? actual : actual[key]; + if (!deepCompare(actualVal, expectedVal, comparator, matchAnyProperty, matchAnyProperty)) { + return false; + } + } + return true; + } else { + return comparator(actual, expected); + } + break; + case 'function': + return false; + default: + return comparator(actual, expected); + } } /** @@ -16821,7 +17015,6 @@ function formatNumber(number, pattern, groupSep, decimalSep, fractionSize) { if (numStr.indexOf('e') !== -1) { var match = numStr.match(/([\d\.]+)e(-?)(\d+)/); if (match && match[2] == '-' && match[3] > fractionSize + 1) { - numStr = '0'; number = 0; } else { formatedText = numStr; @@ -16842,10 +17035,6 @@ function formatNumber(number, pattern, groupSep, decimalSep, fractionSize) { // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round number = +(Math.round(+(number.toString() + 'e' + fractionSize)).toString() + 'e' + -fractionSize); - if (number === 0) { - isNegative = false; - } - var fraction = ('' + number).split(DECIMAL_SEP); var whole = fraction[0]; fraction = fraction[1] || ''; @@ -16878,12 +17067,16 @@ function formatNumber(number, pattern, groupSep, decimalSep, fractionSize) { if (fractionSize && fractionSize !== "0") formatedText += decimalSep + fraction.substr(0, fractionSize); } else { - - if (fractionSize > 0 && number > -1 && number < 1) { + if (fractionSize > 0 && number < 1) { formatedText = number.toFixed(fractionSize); + number = parseFloat(formatedText); } } + if (number === 0) { + isNegative = false; + } + parts.push(isNegative ? pattern.negPre : pattern.posPre, formatedText, isNegative ? pattern.negSuf : pattern.posSuf); @@ -16964,6 +17157,14 @@ function ampmGetter(date, formats) { return date.getHours() < 12 ? formats.AMPMS[0] : formats.AMPMS[1]; } +function eraGetter(date, formats) { + return date.getFullYear() <= 0 ? formats.ERAS[0] : formats.ERAS[1]; +} + +function longEraGetter(date, formats) { + return date.getFullYear() <= 0 ? formats.ERANAMES[0] : formats.ERANAMES[1]; +} + var DATE_FORMATS = { yyyy: dateGetter('FullYear', 4), yy: dateGetter('FullYear', 2, 0, true), @@ -16990,10 +17191,14 @@ var DATE_FORMATS = { a: ampmGetter, Z: timeZoneGetter, ww: weekGetter(2), - w: weekGetter(1) + w: weekGetter(1), + G: eraGetter, + GG: eraGetter, + GGG: eraGetter, + GGGG: longEraGetter }; -var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZEw']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|w+))(.*)/, +var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/, NUMBER_STRING = /^\-?\d+$/; /** @@ -17025,11 +17230,13 @@ var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZEw']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d * * `'m'`: Minute in hour (0-59) * * `'ss'`: Second in minute, padded (00-59) * * `'s'`: Second in minute (0-59) - * * `'.sss' or ',sss'`: Millisecond in second, padded (000-999) + * * `'sss'`: Millisecond in second, padded (000-999) * * `'a'`: AM/PM marker * * `'Z'`: 4 digit (+sign) representation of the timezone offset (-1200-+1200) - * * `'ww'`: ISO-8601 week of year (00-53) - * * `'w'`: ISO-8601 week of year (0-53) + * * `'ww'`: Week of year, padded (00-53). Week 01 is the week with the first Thursday of the year + * * `'w'`: Week of year (0-53). Week 1 is the week with the first Thursday of the year + * * `'G'`, `'GG'`, `'GGG'`: The abbreviated form of the era string (e.g. 'AD') + * * `'GGGG'`: The long form of the era string (e.g. 'Anno Domini') * * `format` string can also be one of the following predefined * {@link guide/i18n localizable formats}: @@ -17173,25 +17380,31 @@ function dateFilter($locale) { * the binding is automatically converted to JSON. * * @param {*} object Any JavaScript object (including arrays and primitive types) to filter. + * @param {number=} spacing The number of spaces to use per indentation, defaults to 2. * @returns {string} JSON string. * * * @example -
    {{ {'name':'value'} | json }}
    +
    {{ {'name':'value'} | json }}
    +
    {{ {'name':'value'} | json:4 }}
    it('should jsonify filtered objects', function() { - expect(element(by.binding("{'name':'value'}")).getText()).toMatch(/\{\n "name": ?"value"\n}/); + expect(element(by.id('default-spacing')).getText()).toMatch(/\{\n "name": ?"value"\n}/); + expect(element(by.id('custom-spacing')).getText()).toMatch(/\{\n "name": ?"value"\n}/); });
    * */ function jsonFilter() { - return function(object) { - return toJson(object, true); + return function(object, spacing) { + if (isUndefined(spacing)) { + spacing = 2; + } + return toJson(object, spacing); }; } @@ -17314,37 +17527,12 @@ function limitToFilter() { limit = int(limit); } - if (isString(input)) { - //NaN check on limit - if (limit) { - return limit >= 0 ? input.slice(0, limit) : input.slice(limit, input.length); - } else { - return ""; - } - } - - var out = [], - i, n; - - // if abs(limit) exceeds maximum length, trim it - if (limit > input.length) - limit = input.length; - else if (limit < -input.length) - limit = -input.length; - - if (limit > 0) { - i = 0; - n = limit; + //NaN check on limit + if (limit) { + return limit > 0 ? input.slice(0, limit) : input.slice(limit); } else { - i = input.length + limit; - n = input.length; + return isString(input) ? "" : []; } - - for (; i < n; i++) { - out.push(input[i]); - } - - return out; }; } @@ -17382,6 +17570,43 @@ function limitToFilter() { * @param {boolean=} reverse Reverse the order of the array. * @returns {Array} Sorted copy of the source array. * + * + * @example + * The example below demonstrates a simple ngRepeat, where the data is sorted + * by age in descending order (predicate is set to `'-age'`). + * `reverse` is not set, which means it defaults to `false`. + + + +
    + + + + + + + + + + + +
    NamePhone NumberAge
    {{friend.name}}{{friend.phone}}{{friend.age}}
    +
    +
    +
    + * + * The predicate and reverse parameters can be controlled dynamically through scope properties, + * as shown in the next example. * @example @@ -17478,9 +17703,7 @@ function orderByFilter($parse) { } if (predicate === '') { // Effectively no predicate was passed so we compare identity - return reverseComparator(function(a, b) { - return compare(a, b); - }, descending); + return reverseComparator(compare, descending); } get = $parse(predicate); if (get.constant) { @@ -17508,15 +17731,40 @@ function orderByFilter($parse) { ? function(a, b) {return comp(b,a);} : comp; } + + function isPrimitive(value) { + switch (typeof value) { + case 'number': /* falls through */ + case 'boolean': /* falls through */ + case 'string': + return true; + default: + return false; + } + } + + function objectToString(value) { + if (value === null) return 'null'; + if (typeof value.valueOf === 'function') { + value = value.valueOf(); + if (isPrimitive(value)) return value; + } + if (typeof value.toString === 'function') { + value = value.toString(); + if (isPrimitive(value)) return value; + } + return ''; + } + function compare(v1, v2) { var t1 = typeof v1; var t2 = typeof v2; - if (t1 == t2) { - if (isDate(v1) && isDate(v2)) { - v1 = v1.valueOf(); - v2 = v2.valueOf(); - } - if (t1 == "string") { + if (t1 === t2 && t1 === "object") { + v1 = objectToString(v1); + v2 = objectToString(v2); + } + if (t1 === t2) { + if (t1 === "string") { v1 = v1.toLowerCase(); v2 = v2.toLowerCase(); } @@ -17557,6 +17805,9 @@ var htmlAnchorDirective = valueFn({ compile: function(element, attr) { if (!attr.href && !attr.xlinkHref && !attr.name) { return function(scope, element) { + // If the linked element is not an anchor tag anymore, do nothing + if (element[0].nodeName.toLowerCase() !== 'a') return; + // SVGAElement does not use the href attribute, but rather the 'xlinkHref' attribute. var href = toString.call(element.prop('href')) === '[object SVGAnimatedString]' ? 'xlink:href' : 'href'; @@ -17582,9 +17833,8 @@ var htmlAnchorDirective = valueFn({ * make the link go to the wrong URL if the user clicks it before * Angular has a chance to replace the `{{hash}}` markup with its * value. Until Angular replaces the markup the link will be broken - * and will most likely return a 404 error. - * - * The `ngHref` directive solves this problem. + * and will most likely return a 404 error. The `ngHref` directive + * solves this problem. * * The wrong way to write it: * ```html @@ -17731,20 +17981,24 @@ var htmlAnchorDirective = valueFn({ * * @description * - * We shouldn't do this, because it will make the button enabled on Chrome/Firefox but not on IE8 and older IEs: + * This directive sets the `disabled` attribute on the element if the + * {@link guide/expression expression} inside `ngDisabled` evaluates to truthy. + * + * A special directive is necessary because we cannot use interpolation inside the `disabled` + * attribute. The following example would make the button enabled on Chrome/Firefox + * but not on older IEs: + * * ```html - *
    - * + * + *
    + * *
    * ``` * - * The HTML specification does not require browsers to preserve the values of boolean attributes - * such as disabled. (Their presence means true and their absence means false.) + * This is because the HTML specification does not require browsers to preserve the values of + * boolean attributes such as `disabled` (Their presence means true and their absence means false.) * If we put an Angular interpolation expression into such an attribute then the * binding information would be lost when the browser removes the attribute. - * The `ngDisabled` directive solves this problem for the `disabled` attribute. - * This complementary directive is not removed by the browser and so provides - * a permanent reliable place to store the binding information. * * @example @@ -17763,7 +18017,7 @@ var htmlAnchorDirective = valueFn({ * * @element INPUT * @param {expression} ngDisabled If the {@link guide/expression expression} is truthy, - * then special attribute "disabled" will be set on the element + * then the `disabled` attribute will be set on the element */ @@ -18158,6 +18412,9 @@ function FormController(element, attrs, $scope, $animate, $interpolate) { forEach(form.$error, function(value, name) { form.$setValidity(name, null, control); }); + forEach(form.$$success, function(value, name) { + form.$setValidity(name, null, control); + }); arrayRemove(controls, control); }; @@ -18175,23 +18432,23 @@ function FormController(element, attrs, $scope, $animate, $interpolate) { addSetValidityMethod({ ctrl: this, $element: element, - set: function(object, property, control) { + set: function(object, property, controller) { var list = object[property]; if (!list) { - object[property] = [control]; + object[property] = [controller]; } else { - var index = list.indexOf(control); + var index = list.indexOf(controller); if (index === -1) { - list.push(control); + list.push(controller); } } }, - unset: function(object, property, control) { + unset: function(object, property, controller) { var list = object[property]; if (!list) { return; } - arrayRemove(list, control); + arrayRemove(list, controller); if (list.length === 0) { delete object[property]; } @@ -18308,7 +18565,7 @@ function FormController(element, attrs, $scope, $animate, $interpolate) { * * # Alias: {@link ng.directive:ngForm `ngForm`} * - * In Angular forms can be nested. This means that the outer form is valid when all of the child + * In Angular, forms can be nested. This means that the outer form is valid when all of the child * forms are valid as well. However, browsers do not allow nesting of `
    ` elements, so * Angular provides the {@link ng.directive:ngForm `ngForm`} directive which behaves identically to * `` but can be nested. This allows you to have nested forms, which is very useful when @@ -18446,10 +18703,12 @@ var formDirectiveFactory = function(isNgForm) { name: 'form', restrict: isNgForm ? 'EAC' : 'E', controller: FormController, - compile: function ngFormCompile(formElement) { + compile: function ngFormCompile(formElement, attr) { // Setup initial state of the control formElement.addClass(PRISTINE_CLASS).addClass(VALID_CLASS); + var nameAttr = attr.name ? 'name' : (isNgForm && attr.ngForm ? 'ngForm' : false); + return { pre: function ngFormPreLink(scope, formElement, attr, controller) { // if `action` attr is not present on the form, prevent the default action (submission) @@ -18480,23 +18739,21 @@ var formDirectiveFactory = function(isNgForm) { }); } - var parentFormCtrl = controller.$$parentForm, - alias = controller.$name; - - if (alias) { - setter(scope, alias, controller, alias); - attr.$observe(attr.name ? 'name' : 'ngForm', function(newValue) { - if (alias === newValue) return; - setter(scope, alias, undefined, alias); - alias = newValue; - setter(scope, alias, controller, alias); - parentFormCtrl.$$renameControl(controller, alias); + var parentFormCtrl = controller.$$parentForm; + + if (nameAttr) { + setter(scope, null, controller.$name, controller, controller.$name); + attr.$observe(nameAttr, function(newValue) { + if (controller.$name === newValue) return; + setter(scope, null, controller.$name, undefined, controller.$name); + parentFormCtrl.$$renameControl(controller, newValue); + setter(scope, null, controller.$name, controller, controller.$name); }); } formElement.on('$destroy', function() { parentFormCtrl.$removeControl(controller); - if (alias) { - setter(scope, alias, undefined, alias); + if (nameAttr) { + setter(scope, null, attr[nameAttr], undefined, controller.$name); } extend(controller, nullFormCtrl); //stop propagating child destruction handlers upwards }); @@ -18512,12 +18769,13 @@ var formDirectiveFactory = function(isNgForm) { var formDirective = formDirectiveFactory(); var ngFormDirective = formDirectiveFactory(true); -/* global VALID_CLASS: true, - INVALID_CLASS: true, - PRISTINE_CLASS: true, - DIRTY_CLASS: true, - UNTOUCHED_CLASS: true, - TOUCHED_CLASS: true, +/* global VALID_CLASS: false, + INVALID_CLASS: false, + PRISTINE_CLASS: false, + DIRTY_CLASS: false, + UNTOUCHED_CLASS: false, + TOUCHED_CLASS: false, + $ngModelMinErr: false, */ // Regex code is obtained from SO: https://stackoverflow.com/questions/3143070/javascript-regex-iso-datetime#answer-3143231 @@ -18530,9 +18788,6 @@ var DATETIMELOCAL_REGEXP = /^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{ var WEEK_REGEXP = /^(\d{4})-W(\d\d)$/; var MONTH_REGEXP = /^(\d{4})-(\d\d)$/; var TIME_REGEXP = /^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/; -var DEFAULT_REGEXP = /(\s+|^)default(\s+|$)/; - -var $ngModelMinErr = new minErr('ngModel'); var inputType = { @@ -18575,19 +18830,21 @@ var inputType = { - Single word: + Single word: Required! Single word only! - text = {{text}}
    + text = {{example.text}}
    myForm.input.$valid = {{myForm.input.$valid}}
    myForm.input.$error = {{myForm.input.$error}}
    myForm.$valid = {{myForm.$valid}}
    @@ -18595,9 +18852,9 @@ var inputType = {
    - var text = element(by.binding('text')); + var text = element(by.binding('example.text')); var valid = element(by.binding('myForm.input.$valid')); - var input = element(by.model('text')); + var input = element(by.model('example.text')); it('should initialize to model', function() { expect(text.getText()).toContain('guest'); @@ -18659,18 +18916,20 @@ var inputType = {
    Pick a date in 2013: - Required! Not a valid date! - value = {{value | date: "yyyy-MM-dd"}}
    + value = {{example.value | date: "yyyy-MM-dd"}}
    myForm.input.$valid = {{myForm.input.$valid}}
    myForm.input.$error = {{myForm.input.$error}}
    myForm.$valid = {{myForm.$valid}}
    @@ -18678,9 +18937,9 @@ var inputType = {
    - var value = element(by.binding('value | date: "yyyy-MM-dd"')); + var value = element(by.binding('example.value | date: "yyyy-MM-dd"')); var valid = element(by.binding('myForm.input.$valid')); - var input = element(by.model('value')); + var input = element(by.model('example.value')); // currently protractor/webdriver does not support // sending keys to all known HTML5 input controls @@ -18750,18 +19009,20 @@ var inputType = {
    Pick a date between in 2013: - Required! Not a valid date! - value = {{value | date: "yyyy-MM-ddTHH:mm:ss"}}
    + value = {{example.value | date: "yyyy-MM-ddTHH:mm:ss"}}
    myForm.input.$valid = {{myForm.input.$valid}}
    myForm.input.$error = {{myForm.input.$error}}
    myForm.$valid = {{myForm.$valid}}
    @@ -18769,9 +19030,9 @@ var inputType = {
    - var value = element(by.binding('value | date: "yyyy-MM-ddTHH:mm:ss"')); + var value = element(by.binding('example.value | date: "yyyy-MM-ddTHH:mm:ss"')); var valid = element(by.binding('myForm.input.$valid')); - var input = element(by.model('value')); + var input = element(by.model('example.value')); // currently protractor/webdriver does not support // sending keys to all known HTML5 input controls @@ -18842,18 +19103,20 @@ var inputType = {
    Pick a between 8am and 5pm: - Required! Not a valid date! - value = {{value | date: "HH:mm:ss"}}
    + value = {{example.value | date: "HH:mm:ss"}}
    myForm.input.$valid = {{myForm.input.$valid}}
    myForm.input.$error = {{myForm.input.$error}}
    myForm.$valid = {{myForm.$valid}}
    @@ -18861,9 +19124,9 @@ var inputType = {
    - var value = element(by.binding('value | date: "HH:mm:ss"')); + var value = element(by.binding('example.value | date: "HH:mm:ss"')); var valid = element(by.binding('myForm.input.$valid')); - var input = element(by.model('value')); + var input = element(by.model('example.value')); // currently protractor/webdriver does not support // sending keys to all known HTML5 input controls @@ -18933,18 +19196,20 @@ var inputType = {
    Pick a date between in 2013: - Required! Not a valid date! - value = {{value | date: "yyyy-Www"}}
    + value = {{example.value | date: "yyyy-Www"}}
    myForm.input.$valid = {{myForm.input.$valid}}
    myForm.input.$error = {{myForm.input.$error}}
    myForm.$valid = {{myForm.$valid}}
    @@ -18952,9 +19217,9 @@ var inputType = {
    - var value = element(by.binding('value | date: "yyyy-Www"')); + var value = element(by.binding('example.value | date: "yyyy-Www"')); var valid = element(by.binding('myForm.input.$valid')); - var input = element(by.model('value')); + var input = element(by.model('example.value')); // currently protractor/webdriver does not support // sending keys to all known HTML5 input controls @@ -19024,18 +19289,20 @@ var inputType = {
    - Pick a month int 2013: - Required! Not a valid month! - value = {{value | date: "yyyy-MM"}}
    + value = {{example.value | date: "yyyy-MM"}}
    myForm.input.$valid = {{myForm.input.$valid}}
    myForm.input.$error = {{myForm.input.$error}}
    myForm.$valid = {{myForm.$valid}}
    @@ -19043,9 +19310,9 @@ var inputType = {
    - var value = element(by.binding('value | date: "yyyy-MM"')); + var value = element(by.binding('example.value | date: "yyyy-MM"')); var valid = element(by.binding('myForm.input.$valid')); - var input = element(by.model('value')); + var input = element(by.model('example.value')); // currently protractor/webdriver does not support // sending keys to all known HTML5 input controls @@ -19121,17 +19388,19 @@ var inputType = {
    - Number: Required! Not valid number! - value = {{value}}
    + value = {{example.value}}
    myForm.input.$valid = {{myForm.input.$valid}}
    myForm.input.$error = {{myForm.input.$error}}
    myForm.$valid = {{myForm.$valid}}
    @@ -19139,9 +19408,9 @@ var inputType = {
    - var value = element(by.binding('value')); + var value = element(by.binding('example.value')); var valid = element(by.binding('myForm.input.$valid')); - var input = element(by.model('value')); + var input = element(by.model('example.value')); it('should initialize to model', function() { expect(value.getText()).toContain('12'); @@ -19209,16 +19478,18 @@ var inputType = {
    - URL: + URL: Required! Not valid url! - text = {{text}}
    + text = {{url.text}}
    myForm.input.$valid = {{myForm.input.$valid}}
    myForm.input.$error = {{myForm.input.$error}}
    myForm.$valid = {{myForm.$valid}}
    @@ -19227,9 +19498,9 @@ var inputType = {
    - var text = element(by.binding('text')); + var text = element(by.binding('url.text')); var valid = element(by.binding('myForm.input.$valid')); - var input = element(by.model('text')); + var input = element(by.model('url.text')); it('should initialize to model', function() { expect(text.getText()).toContain('http://google.com'); @@ -19298,16 +19569,18 @@ var inputType = {
    - Email: + Email: Required! Not valid email! - text = {{text}}
    + text = {{email.text}}
    myForm.input.$valid = {{myForm.input.$valid}}
    myForm.input.$error = {{myForm.input.$error}}
    myForm.$valid = {{myForm.$valid}}
    @@ -19316,9 +19589,9 @@ var inputType = {
    - var text = element(by.binding('text')); + var text = element(by.binding('email.text')); var valid = element(by.binding('myForm.input.$valid')); - var input = element(by.model('text')); + var input = element(by.model('email.text')); it('should initialize to model', function() { expect(text.getText()).toContain('me@example.com'); @@ -19365,7 +19638,9 @@ var inputType = {
    - Red
    - Green
    - Blue
    - color = {{color | json}}
    + Red
    + Green
    + Blue
    + color = {{color.name | json}}
    Note that `ng-value="specialValue"` sets radio item's value to be the value of `$scope.specialValue`.
    it('should change state', function() { - var color = element(by.binding('color')); + var color = element(by.binding('color.name')); expect(color.getText()).toContain('blue'); - element.all(by.model('color')).get(0).click(); + element.all(by.model('color.name')).get(0).click(); expect(color.getText()).toContain('red'); }); @@ -19416,28 +19691,30 @@ var inputType = {
    - Value1:
    - Value2:
    + Value2:
    - value1 = {{value1}}
    - value2 = {{value2}}
    + value1 = {{checkboxModel.value1}}
    + value2 = {{checkboxModel.value2}}
    it('should change state', function() { - var value1 = element(by.binding('value1')); - var value2 = element(by.binding('value2')); + var value1 = element(by.binding('checkboxModel.value1')); + var value2 = element(by.binding('checkboxModel.value2')); expect(value1.getText()).toContain('true'); expect(value2.getText()).toContain('YES'); - element(by.model('value1')).click(); - element(by.model('value2')).click(); + element(by.model('checkboxModel.value1')).click(); + element(by.model('checkboxModel.value2')).click(); expect(value1.getText()).toContain('false'); expect(value2.getText()).toContain('NO'); @@ -19466,7 +19743,6 @@ function textInputType(scope, element, attr, ctrl, $sniffer, $browser) { } function baseInputType(scope, element, attr, ctrl, $sniffer, $browser) { - var placeholder = element[0].placeholder, noevent = {}; var type = lowercase(element[0].type); // In composition mode, users are still inputing intermediate text buffer, @@ -19486,19 +19762,14 @@ function baseInputType(scope, element, attr, ctrl, $sniffer, $browser) { } var listener = function(ev) { + if (timeout) { + $browser.defer.cancel(timeout); + timeout = null; + } if (composing) return; var value = element.val(), event = ev && ev.type; - // IE (11 and under) seem to emit an 'input' event if the placeholder value changes. - // We don't want to dirty the value when this happens, so we abort here. Unfortunately, - // IE also sends input events for other non-input-related things, (such as focusing on a - // form control), so this change is not entirely enough to solve this. - if (msie && (ev || noevent).type === 'input' && element[0].placeholder !== placeholder) { - placeholder = element[0].placeholder; - return; - } - // By default we will trim the value // If the attribute ng-trim exists we will avoid trimming // If input type is 'password', the value is never trimmed @@ -19521,11 +19792,13 @@ function baseInputType(scope, element, attr, ctrl, $sniffer, $browser) { } else { var timeout; - var deferListener = function(ev) { + var deferListener = function(ev, input, origValue) { if (!timeout) { timeout = $browser.defer(function() { - listener(ev); timeout = null; + if (!input || input.value !== origValue) { + listener(ev); + } }); } }; @@ -19537,7 +19810,7 @@ function baseInputType(scope, element, attr, ctrl, $sniffer, $browser) { // command modifiers arrows if (key === 91 || (15 < key && key < 19) || (37 <= key && key <= 40)) return; - deferListener(event); + deferListener(event, this, this.value); }); // if user modifies input value using context menu in IE, we need "paste" and "cut" events to catch it @@ -19746,7 +20019,7 @@ function numberInputType(scope, element, attr, ctrl, $sniffer, $browser) { return value; }); - if (attr.min || attr.ngMin) { + if (isDefined(attr.min) || attr.ngMin) { var minVal; ctrl.$validators.min = function(value) { return ctrl.$isEmpty(value) || isUndefined(minVal) || value >= minVal; @@ -19762,7 +20035,7 @@ function numberInputType(scope, element, attr, ctrl, $sniffer, $browser) { }); } - if (attr.max || attr.ngMax) { + if (isDefined(attr.max) || attr.ngMax) { var maxVal; ctrl.$validators.max = function(value) { return ctrl.$isEmpty(value) || isUndefined(maxVal) || value <= maxVal; @@ -20038,3696 +20311,3624 @@ var inputDirective = ['$browser', '$sniffer', '$filter', '$parse', }; }]; -var VALID_CLASS = 'ng-valid', - INVALID_CLASS = 'ng-invalid', - PRISTINE_CLASS = 'ng-pristine', - DIRTY_CLASS = 'ng-dirty', - UNTOUCHED_CLASS = 'ng-untouched', - TOUCHED_CLASS = 'ng-touched', - PENDING_CLASS = 'ng-pending'; - -/** - * @ngdoc type - * @name ngModel.NgModelController - * - * @property {string} $viewValue Actual string value in the view. - * @property {*} $modelValue The value in the model that the control is bound to. - * @property {Array.} $parsers Array of functions to execute, as a pipeline, whenever - the control reads value from the DOM. The functions are called in array order, each passing - its return value through to the next. The last return value is forwarded to the - {@link ngModel.NgModelController#$validators `$validators`} collection. - -Parsers are used to sanitize / convert the {@link ngModel.NgModelController#$viewValue -`$viewValue`}. -Returning `undefined` from a parser means a parse error occurred. In that case, -no {@link ngModel.NgModelController#$validators `$validators`} will run and the `ngModel` -will be set to `undefined` unless {@link ngModelOptions `ngModelOptions.allowInvalid`} -is set to `true`. The parse error is stored in `ngModel.$error.parse`. +var CONSTANT_VALUE_REGEXP = /^(true|false|\d+)$/; +/** + * @ngdoc directive + * @name ngValue * - * @property {Array.} $formatters Array of functions to execute, as a pipeline, whenever - the model value changes. The functions are called in reverse array order, each passing the value through to the - next. The last return value is used as the actual DOM value. - Used to format / convert values for display in the control. - * ```js - * function formatter(value) { - * if (value) { - * return value.toUpperCase(); - * } - * } - * ngModel.$formatters.push(formatter); - * ``` - * - * @property {Object.} $validators A collection of validators that are applied - * whenever the model value changes. The key value within the object refers to the name of the - * validator while the function refers to the validation operation. The validation operation is - * provided with the model value as an argument and must return a true or false value depending - * on the response of that validation. + * @description + * Binds the given expression to the value of `
    * - * ## `select as` + * ## `select` **`as`** * - * Using `select as` will bind the result of the `select as` expression to the model, but + * Using `select` **`as`** will bind the result of the `select` expression to the model, but * the value of the ` + * ``` + * + * ```js + * $scope.values = [{ + * id: 1, + * label: 'aLabel', + * subItem: { name: 'aSubItem' } + * }, { + * id: 2, + * label: 'bLabel', + * subItem: { name: 'bSubItem' } + * }]; + * + * $scope.selected = { name: 'aSubItem' }; + * ``` + * + * With the purpose of preserving the selection, the **`track by`** expression is always applied to the element + * of the data source (to `item` in this example). To calculate whether an element is selected, we do the + * following: + * + * 1. Apply **`track by`** to the elements in the array. In the example: `[1, 2]` + * 2. Apply **`track by`** to the already selected value in `ngModel`. + * In the example: this is not possible as **`track by`** refers to `item.id`, but the selected + * value from `ngModel` is `{name: 'aSubItem'}`, so the **`track by`** expression is applied to + * a wrong object, the selected element can't be found, `',""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};ja.optgroup=ja.option;ja.tbody=ja.tfoot=ja.colgroup=ja.caption=ja.thead;ja.th=ja.td;var Ka=S.prototype={ready:function(b){function a(){c||(c=!0,b())}var c=!1;"complete"===V.readyState?setTimeout(a):(this.on("DOMContentLoaded",a),S(U).on("load",a))}, -toString:function(){var b=[];r(this,function(a){b.push(""+a)});return"["+b.join(", ")+"]"},eq:function(b){return 0<=b?A(this[b]):A(this[this.length+b])},length:0,push:Kf,sort:[].sort,splice:[].splice},yb={};r("multiple selected checked disabled readOnly required open".split(" "),function(b){yb[R(b)]=b});var Kc={};r("input select option textarea button form details".split(" "),function(b){Kc[b]=!0});var Lc={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"}; -r({data:Sb,removeData:ub},function(b,a){S[a]=b});r({data:Sb,inheritedData:xb,scope:function(b){return A.data(b,"$scope")||xb(b.parentNode||b,["$isolateScope","$scope"])},isolateScope:function(b){return A.data(b,"$isolateScope")||A.data(b,"$isolateScopeNoTemplate")},controller:Gc,injector:function(b){return xb(b,"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:Tb,css:function(b,a,c){a=bb(a);if(y(c))b.style[a]=c;else return b.style[a]},attr:function(b,a,c){var d=R(a);if(yb[d])if(y(c))c? -(b[a]=!0,b.setAttribute(a,d)):(b[a]=!1,b.removeAttribute(d));else return b[a]||(b.attributes.getNamedItem(a)||x).specified?d:u;else if(y(c))b.setAttribute(a,c);else if(b.getAttribute)return b=b.getAttribute(a,2),null===b?u:b},prop:function(b,a,c){if(y(c))b[a]=c;else return b[a]},text:function(){function b(a,b){if(G(b)){var d=a.nodeType;return d===na||d===mb?a.textContent:""}a.textContent=b}b.$dv="";return b}(),val:function(b,a){if(G(a)){if(b.multiple&&"select"===ta(b)){var c=[];r(b.options,function(a){a.selected&& -c.push(a.value||a.text)});return 0===c.length?null:c}return b.value}b.value=a},html:function(b,a){if(G(a))return b.innerHTML;tb(b,!0);b.innerHTML=a},empty:Hc},function(b,a){S.prototype[a]=function(a,d){var e,f,g=this.length;if(b!==Hc&&(2==b.length&&b!==Tb&&b!==Gc?a:d)===u){if(K(a)){for(e=0;e":function(a,c,d,e){return d(a,c)>e(a,c)},"<=":function(a,c,d,e){return d(a,c)<=e(a,c)},">=":function(a,c,d,e){return d(a,c)>=e(a,c)},"&&":function(a,c,d,e){return d(a,c)&&e(a,c)},"||":function(a,c,d,e){return d(a,c)||e(a,c)},"!":function(a,c,d){return!d(a,c)},"=":!0,"|":!0}),Sf={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},gc=function(a){this.options=a};gc.prototype={constructor:gc,lex:function(a){this.text=a;this.index=0;for(this.tokens= -[];this.index=a&&"string"===typeof a},isWhitespace:function(a){return" "===a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdent:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isExpOperator:function(a){return"-"=== -a||"+"===a||this.isNumber(a)},throwError:function(a,c,d){d=d||this.index;c=y(c)?"s "+c+"-"+this.index+" ["+this.text.substring(c,d)+"]":" "+d;throw la("lexerr",a,c,this.text);},readNumber:function(){for(var a="",c=this.index;this.indexa){a=this.tokens[a];var g=a.text;if(g===c||g===d||g===e||g===f||!(c||d||e||f))return a}return!1},expect:function(a,c,d,e){return(a=this.peek(a,c,d,e))?(this.tokens.shift(),a):!1},consume:function(a){if(0===this.tokens.length)throw la("ueoe",this.text);var c=this.expect(a);c||this.throwError("is unexpected, expecting ["+a+"]",this.peek());return c},unaryFn:function(a,c){var d=jb[a];return C(function(a,f){return d(a, -f,c)},{constant:c.constant,inputs:[c]})},binaryFn:function(a,c,d,e){var f=jb[c];return C(function(c,e){return f(c,e,a,d)},{constant:a.constant&&d.constant,inputs:!e&&[a,d]})},identifier:function(){for(var a=this.consume().text;this.peek(".")&&this.peekAhead(1).identifier&&!this.peekAhead(2,"(");)a+=this.consume().text+this.consume().text;return Ib[a]||bd(a,this.options,this.text)},constant:function(){var a=this.consume().value;return C(function(){return a},{constant:!0,literal:!0})},statements:function(){for(var a= -[];;)if(0","<=",">="))a=this.binaryFn(a,c.text,this.relational());return a},additive:function(){for(var a=this.multiplicative(),c;c=this.expect("+","-");)a=this.binaryFn(a,c.text,this.multiplicative());return a},multiplicative:function(){for(var a=this.unary(),c;c=this.expect("*","/","%");)a=this.binaryFn(a,c.text,this.unary());return a},unary:function(){var a;return this.expect("+")? -this.primary():(a=this.expect("-"))?this.binaryFn(fb.ZERO,a.text,this.unary()):(a=this.expect("!"))?this.unaryFn(a.text,this.unary()):this.primary()},fieldAccess:function(a){var c=this.text,d=this.consume().text,e=bd(d,this.options,c);return C(function(c,d,h){return e(h||a(c,d))},{assign:function(e,g,h){(h=a(e,h))||a.assign(e,h={});return Oa(h,d,g,c)}})},objectIndex:function(a){var c=this.text,d=this.expression();this.consume("]");return C(function(e,f){var g=a(e,f),h=d(e,f);ra(h,c);return g?sa(g[h], -c):u},{assign:function(e,f,g){var h=ra(d(e,g),c);(g=sa(a(e,g),c))||a.assign(e,g={});return g[h]=f}})},functionCall:function(a,c){var d=[];if(")"!==this.peekToken().text){do d.push(this.expression());while(this.expect(","))}this.consume(")");var e=this.text,f=d.length?[]:null;return function(g,h){var k=c?c(g,h):g,l=a(g,h,k)||x;if(f)for(var m=d.length;m--;)f[m]=sa(d[m](g,h),e);sa(k,e);if(l){if(l.constructor===l)throw la("isecfn",e);if(l===Pf||l===Qf||l===Rf)throw la("isecff",e);}k=l.apply?l.apply(k, -f):l(f[0],f[1],f[2],f[3],f[4]);return sa(k,e)}},arrayDeclaration:function(){var a=[];if("]"!==this.peekToken().text){do{if(this.peek("]"))break;a.push(this.expression())}while(this.expect(","))}this.consume("]");return C(function(c,d){for(var e=[],f=0,g=a.length;fa.getHours()?c.AMPMS[0]:c.AMPMS[1]},Z:function(a){a=-1*a.getTimezoneOffset();return a=(0<= -a?"+":"")+(Cb(Math[0=h};d.$observe("min",function(a){y(a)&&!X(a)&&(a=parseFloat(a,10));h=X(a)&&!isNaN(a)?a:u;e.$validate()})}if(d.max||d.ngMax){var k;e.$validators.max=function(a){return e.$isEmpty(a)||G(k)||a<=k};d.$observe("max",function(a){y(a)&&!X(a)&&(a=parseFloat(a,10));k=X(a)&&!isNaN(a)?a:u;e.$validate()})}},url:function(a,c,d,e,f,g){gb(a,c,d,e,f,g);hc(e);e.$$parserName="url";e.$validators.url=function(a, -c){var d=a||c;return e.$isEmpty(d)||Tf.test(d)}},email:function(a,c,d,e,f,g){gb(a,c,d,e,f,g);hc(e);e.$$parserName="email";e.$validators.email=function(a,c){var d=a||c;return e.$isEmpty(d)||Uf.test(d)}},radio:function(a,c,d,e){G(d.name)&&c.attr("name",++kb);c.on("click",function(a){c[0].checked&&e.$setViewValue(d.value,a&&a.type)});e.$render=function(){c[0].checked=d.value==e.$viewValue};d.$observe("value",e.$render)},checkbox:function(a,c,d,e,f,g,h,k){var l=rd(k,a,"ngTrueValue",d.ngTrueValue,!0), -m=rd(k,a,"ngFalseValue",d.ngFalseValue,!1);c.on("click",function(a){e.$setViewValue(c[0].checked,a&&a.type)});e.$render=function(){c[0].checked=e.$viewValue};e.$isEmpty=function(a){return!1===a};e.$formatters.push(function(a){return pa(a,l)});e.$parsers.push(function(a){return a?l:m})},hidden:x,button:x,submit:x,reset:x,file:x},vc=["$browser","$sniffer","$filter","$parse",function(a,c,d,e){return{restrict:"E",require:["?ngModel"],link:{pre:function(f,g,h,k){k[0]&&(Ad[R(h.type)]||Ad.text)(f,g,h,k[0], -c,a,d,e)}}}}],ib="ng-valid",sd="ng-invalid",Qa="ng-pristine",Fb="ng-dirty",ud="ng-pending",Xf=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(a,c,d,e,f,g,h,k,l,m){this.$modelValue=this.$viewValue=Number.NaN;this.$$rawModelValue=u;this.$validators={};this.$asyncValidators={};this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$untouched=!0;this.$touched=!1;this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid= -!1;this.$error={};this.$$success={};this.$pending=u;this.$name=m(d.name||"",!1)(a);var p=f(d.ngModel),s=p.assign,t=p,q=s,N=null,n=this;this.$$setOptions=function(a){if((n.$options=a)&&a.getterSetter){var c=f(d.ngModel+"()"),g=f(d.ngModel+"($$$p)");t=function(a){var d=p(a);F(d)&&(d=c(a));return d};q=function(a,c){F(p(a))?g(a,{$$$p:n.$modelValue}):s(a,n.$modelValue)}}else if(!p.assign)throw Hb("nonassign",d.ngModel,va(e));};this.$render=x;this.$isEmpty=function(a){return G(a)||""===a||null===a||a!== -a};var v=e.inheritedData("$formController")||Eb,w=0;pd({ctrl:this,$element:e,set:function(a,c){a[c]=!0},unset:function(a,c){delete a[c]},parentForm:v,$animate:g});this.$setPristine=function(){n.$dirty=!1;n.$pristine=!0;g.removeClass(e,Fb);g.addClass(e,Qa)};this.$setDirty=function(){n.$dirty=!0;n.$pristine=!1;g.removeClass(e,Qa);g.addClass(e,Fb);v.$setDirty()};this.$setUntouched=function(){n.$touched=!1;n.$untouched=!0;g.setClass(e,"ng-untouched","ng-touched")};this.$setTouched=function(){n.$touched= -!0;n.$untouched=!1;g.setClass(e,"ng-touched","ng-untouched")};this.$rollbackViewValue=function(){h.cancel(N);n.$viewValue=n.$$lastCommittedViewValue;n.$render()};this.$validate=function(){if(!X(n.$modelValue)||!isNaN(n.$modelValue)){var a=n.$$rawModelValue,c=n.$valid,d=n.$modelValue,e=n.$options&&n.$options.allowInvalid;n.$$runValidators(n.$error[n.$$parserName||"parse"]?!1:u,a,n.$$lastCommittedViewValue,function(f){e||c===f||(n.$modelValue=f?a:u,n.$modelValue!==d&&n.$$writeModelToScope())})}};this.$$runValidators= -function(a,c,d,e){function f(){var a=!0;r(n.$validators,function(e,f){var g=e(c,d);a=a&&g;h(f,g)});return a?!0:(r(n.$asyncValidators,function(a,c){h(c,null)}),!1)}function g(){var a=[],e=!0;r(n.$asyncValidators,function(f,g){var k=f(c,d);if(!k||!F(k.then))throw Hb("$asyncValidators",k);h(g,u);a.push(k.then(function(){h(g,!0)},function(a){e=!1;h(g,!1)}))});a.length?l.all(a).then(function(){k(e)},x):k(!0)}function h(a,c){m===w&&n.$setValidity(a,c)}function k(a){m===w&&e(a)}w++;var m=w;(function(a){var c= -n.$$parserName||"parse";if(a===u)h(c,null);else if(h(c,a),!a)return r(n.$validators,function(a,c){h(c,null)}),r(n.$asyncValidators,function(a,c){h(c,null)}),!1;return!0})(a)?f()?g():k(!1):k(!1)};this.$commitViewValue=function(){var a=n.$viewValue;h.cancel(N);if(n.$$lastCommittedViewValue!==a||""===a&&n.$$hasNativeValidators)n.$$lastCommittedViewValue=a,n.$pristine&&this.$setDirty(),this.$$parseAndValidate()};this.$$parseAndValidate=function(){var c=n.$$lastCommittedViewValue,d=c,e=G(d)?u:!0;if(e)for(var f= -0;ff||e.$isEmpty(a)||c.length<=f}}}}},yc=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){if(e){var f=0;d.$observe("minlength",function(a){f=$(a)||0;e.$validate()});e.$validators.minlength=function(a,c){return e.$isEmpty(c)||c.length>=f}}}}},te=function(){return{restrict:"A",priority:100,require:"ngModel", -link:function(a,c,d,e){var f=c.attr(d.$attr.ngList)||", ",g="false"!==d.ngTrim,h=g?P(f):f;e.$parsers.push(function(a){if(!G(a)){var c=[];a&&r(a.split(h),function(a){a&&c.push(g?P(a):a)});return c}});e.$formatters.push(function(a){return D(a)?a.join(f):u});e.$isEmpty=function(a){return!a||!a.length}}}},Yf=/^(true|false|\d+)$/,ve=function(){return{restrict:"A",priority:100,compile:function(a,c){return Yf.test(c.ngValue)?function(a,c,f){f.$set("value",a.$eval(f.ngValue))}:function(a,c,f){a.$watch(f.ngValue, -function(a){f.$set("value",a)})}}}},we=function(){return{restrict:"A",controller:["$scope","$attrs",function(a,c){var d=this;this.$options=a.$eval(c.ngModelOptions);this.$options.updateOn!==u?(this.$options.updateOnDefault=!1,this.$options.updateOn=P(this.$options.updateOn.replace(Wf,function(){d.$options.updateOnDefault=!0;return" "}))):this.$options.updateOnDefault=!0}]}},Wd=["$compile",function(a){return{restrict:"AC",compile:function(c){a.$$addBindingClass(c);return function(c,e,f){a.$$addBindingInfo(e, -f.ngBind);e=e[0];c.$watch(f.ngBind,function(a){e.textContent=a===u?"":a})}}}}],Yd=["$interpolate","$compile",function(a,c){return{compile:function(d){c.$$addBindingClass(d);return function(d,f,g){d=a(f.attr(g.$attr.ngBindTemplate));c.$$addBindingInfo(f,d.expressions);f=f[0];g.$observe("ngBindTemplate",function(a){f.textContent=a===u?"":a})}}}}],Xd=["$sce","$parse","$compile",function(a,c,d){return{restrict:"A",compile:function(e,f){var g=c(f.ngBindHtml),h=c(f.ngBindHtml,function(a){return(a||"").toString()}); -d.$$addBindingClass(e);return function(c,e,f){d.$$addBindingInfo(e,f.ngBindHtml);c.$watch(h,function(){e.html(a.getTrustedHtml(g(c))||"")})}}}}],Zd=ic("",!0),ae=ic("Odd",0),$d=ic("Even",1),be=Ia({compile:function(a,c){c.$set("ngCloak",u);a.removeClass("ng-cloak")}}),ce=[function(){return{restrict:"A",scope:!0,controller:"@",priority:500}}],Ac={},Zf={blur:!0,focus:!0};r("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "), -function(a){var c=wa("ng-"+a);Ac[c]=["$parse","$rootScope",function(d,e){return{restrict:"A",compile:function(f,g){var h=d(g[c],null,!0);return function(c,d){d.on(a,function(d){var f=function(){h(c,{$event:d})};Zf[a]&&e.$$phase?c.$evalAsync(f):c.$apply(f)})}}}}]});var fe=["$animate",function(a){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(c,d,e,f,g){var h,k,l;c.$watch(e.ngIf,function(c){c?k||g(function(c,f){k=f;c[c.length++]=V.createComment(" end ngIf: "+ -e.ngIf+" ");h={clone:c};a.enter(c,d.parent(),d)}):(l&&(l.remove(),l=null),k&&(k.$destroy(),k=null),h&&(l=qb(h.clone),a.leave(l).then(function(){l=null}),h=null))})}}}],ge=["$templateRequest","$anchorScroll","$animate","$sce",function(a,c,d,e){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:ha.noop,compile:function(f,g){var h=g.ngInclude||g.src,k=g.onload||"",l=g.autoscroll;return function(f,g,s,r,q){var u=0,n,v,w,O=function(){v&&(v.remove(),v=null);n&&(n.$destroy(), -n=null);w&&(d.leave(w).then(function(){v=null}),v=w,w=null)};f.$watch(e.parseAsResourceUrl(h),function(e){var h=function(){!y(l)||l&&!f.$eval(l)||c()},s=++u;e?(a(e,!0).then(function(a){if(s===u){var c=f.$new();r.template=a;a=q(c,function(a){O();d.enter(a,null,g).then(h)});n=c;w=a;n.$emit("$includeContentLoaded",e);f.$eval(k)}},function(){s===u&&(O(),f.$emit("$includeContentError",e))}),f.$emit("$includeContentRequested",e)):(O(),r.template=null)})}}}}],xe=["$compile",function(a){return{restrict:"ECA", -priority:-400,require:"ngInclude",link:function(c,d,e,f){/SVG/.test(d[0].toString())?(d.empty(),a(Dc(f.template,V).childNodes)(c,function(a){d.append(a)},{futureParentElement:d})):(d.html(f.template),a(d.contents())(c))}}}],he=Ia({priority:450,compile:function(){return{pre:function(a,c,d){a.$eval(d.ngInit)}}}}),ie=Ia({terminal:!0,priority:1E3}),je=["$locale","$interpolate",function(a,c){var d=/{}/g,e=/^when(Minus)?(.+)$/;return{restrict:"EA",link:function(f,g,h){function k(a){g.text(a||"")}var l= -h.count,m=h.$attr.when&&g.attr(h.$attr.when),p=h.offset||0,s=f.$eval(m)||{},t={},m=c.startSymbol(),q=c.endSymbol(),u=m+l+"-"+p+q,n=ha.noop,v;r(h,function(a,c){var d=e.exec(c);d&&(d=(d[1]?"-":"")+R(d[2]),s[d]=g.attr(h.$attr[c]))});r(s,function(a,e){t[e]=c(a.replace(d,u))});f.$watch(l,function(c){c=parseFloat(c);var d=isNaN(c);d||c in s||(c=a.pluralCat(c-p));c===v||d&&isNaN(v)||(n(),n=f.$watch(t[c],k),v=c)})}}}],ke=["$parse","$animate",function(a,c){var d=z("ngRepeat"),e=function(a,c,d,e,l,m,p){a[d]= -e;l&&(a[l]=m);a.$index=c;a.$first=0===c;a.$last=c===p-1;a.$middle=!(a.$first||a.$last);a.$odd=!(a.$even=0===(c&1))};return{restrict:"A",multiElement:!0,transclude:"element",priority:1E3,terminal:!0,$$tlb:!0,compile:function(f,g){var h=g.ngRepeat,k=V.createComment(" end ngRepeat: "+h+" "),l=h.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);if(!l)throw d("iexp",h);var m=l[1],p=l[2],s=l[3],t=l[4],l=m.match(/^(?:([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\))$/); -if(!l)throw d("iidexp",m);var q=l[3]||l[1],y=l[2];if(s&&(!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(s)||/^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent)$/.test(s)))throw d("badident",s);var n,v,w,z,E={$id:Ma};t?n=a(t):(w=function(a,c){return Ma(c)},z=function(a){return a});return function(a,f,g,l,m){n&&(v=function(c,d,e){y&&(E[y]=c);E[q]=d;E.$index=e;return n(a,E)});var t=ia();a.$watchCollection(p,function(g){var l,n,p=f[0],B,E=ia(),C,x,G,T,D,F,I;s&&(a[s]=g);if(Ra(g))D=g,n=v|| -w;else{n=v||z;D=[];for(I in g)g.hasOwnProperty(I)&&"$"!=I.charAt(0)&&D.push(I);D.sort()}C=D.length;I=Array(C);for(l=0;lD;)d=q.pop(),m(Q,d.label,!1),d.element.remove();r(Q,function(a,c){0a&&s.removeOption(c)})}for(;R.length>x;)R.pop()[0].element.remove()}var p;if(!(p=q.match(d)))throw $f("iexp",q,va(f));var E=c(p[2]|| -p[1]),x=p[4]||p[6],A=/ as /.test(p[0])&&p[1],C=A?c(A):null,G=p[5],I=c(p[3]||""),H=c(p[2]?p[1]:x),M=c(p[7]),K=p[8]?c(p[8]):null,S={},R=[[{element:f,label:""}]],U={};z&&(a(z)(e),z.removeClass("ng-scope"),z.remove());f.empty();f.on("change",function(){e.$apply(function(){var a=M(e)||[],c;if(t)c=[],r(f.val(),function(d){d=K?S[d]:d;c.push("?"===d?u:""===d?null:h(C?C:H,d,a[d]))});else{var d=K?S[f.val()]:f.val();c="?"===d?u:""===d?null:h(C?C:H,d,a[d])}g.$setViewValue(c);n()})});g.$render=n;e.$watchCollection(M, -l);e.$watchCollection(function(){var a=M(e),c;if(a&&D(a)){c=Array(a.length);for(var d=0,f=a.length;d@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\:form{display:block;}'); +(function(Q,W,t){'use strict';function R(b){return function(){var a=arguments[0],c;c="["+(b?b+":":"")+a+"] http://errors.angularjs.org/1.3.15/"+(b?b+"/":"")+a;for(a=1;a").append(b).html();try{return b[0].nodeType===pb?z(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+z(b)})}catch(d){return z(c)}}function rc(b){try{return decodeURIComponent(b)}catch(a){}} +function sc(b){var a={},c,d;r((b||"").split("&"),function(b){b&&(c=b.replace(/\+/g,"%20").split("="),d=rc(c[0]),y(d)&&(b=y(c[1])?rc(c[1]):!0,tc.call(a,d)?H(a[d])?a[d].push(b):a[d]=[a[d],b]:a[d]=b))});return a}function Pb(b){var a=[];r(b,function(b,d){H(b)?r(b,function(b){a.push(Ea(d,!0)+(!0===b?"":"="+Ea(b,!0)))}):a.push(Ea(d,!0)+(!0===b?"":"="+Ea(b,!0)))});return a.length?a.join("&"):""}function qb(b){return Ea(b,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function Ea(b,a){return encodeURIComponent(b).replace(/%40/gi, +"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,a?"%20":"+")}function Id(b,a){var c,d,e=rb.length;b=A(b);for(d=0;d/,">"));}a=a||[];a.unshift(["$provide",function(a){a.value("$rootElement",b)}]);c.debugInfoEnabled&&a.push(["$compileProvider",function(a){a.debugInfoEnabled(!0)}]);a.unshift("ng");d=ab(a,c.strictDi);d.invoke(["$rootScope","$rootElement","$compile","$injector",function(a,b,c,d){a.$apply(function(){b.data("$injector", +d);c(b)(a)})}]);return d},e=/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;Q&&e.test(Q.name)&&(c.debugInfoEnabled=!0,Q.name=Q.name.replace(e,""));if(Q&&!f.test(Q.name))return d();Q.name=Q.name.replace(f,"");ca.resumeBootstrap=function(b){r(b,function(b){a.push(b)});return d()};G(ca.resumeDeferredBootstrap)&&ca.resumeDeferredBootstrap()}function Kd(){Q.name="NG_ENABLE_DEBUG_INFO!"+Q.name;Q.location.reload()}function Ld(b){b=ca.element(b).injector();if(!b)throw Ja("test");return b.get("$$testability")} +function vc(b,a){a=a||"_";return b.replace(Md,function(b,d){return(d?a:"")+b.toLowerCase()})}function Nd(){var b;wc||((ta=Q.jQuery)&&ta.fn.on?(A=ta,w(ta.fn,{scope:Ka.scope,isolateScope:Ka.isolateScope,controller:Ka.controller,injector:Ka.injector,inheritedData:Ka.inheritedData}),b=ta.cleanData,ta.cleanData=function(a){var c;if(Qb)Qb=!1;else for(var d=0,e;null!=(e=a[d]);d++)(c=ta._data(e,"events"))&&c.$destroy&&ta(e).triggerHandler("$destroy");b(a)}):A=T,ca.element=A,wc=!0)}function Rb(b,a,c){if(!b)throw Ja("areq", +a||"?",c||"required");return b}function sb(b,a,c){c&&H(b)&&(b=b[b.length-1]);Rb(G(b),a,"not a function, got "+(b&&"object"===typeof b?b.constructor.name||"Object":typeof b));return b}function La(b,a){if("hasOwnProperty"===b)throw Ja("badname",a);}function xc(b,a,c){if(!a)return b;a=a.split(".");for(var d,e=b,f=a.length,g=0;g")+d[2];for(d=d[0];d--;)c=c.lastChild;f=Ya(f,c.childNodes);c=e.firstChild;c.textContent=""}else f.push(a.createTextNode(b));e.textContent="";e.innerHTML="";r(f,function(a){e.appendChild(a)}); +return e}function T(b){if(b instanceof T)return b;var a;C(b)&&(b=N(b),a=!0);if(!(this instanceof T)){if(a&&"<"!=b.charAt(0))throw Tb("nosel");return new T(b)}if(a){a=W;var c;b=(c=gf.exec(b))?[a.createElement(c[1])]:(c=Hc(b,a))?c.childNodes:[]}Ic(this,b)}function Ub(b){return b.cloneNode(!0)}function wb(b,a){a||xb(b);if(b.querySelectorAll)for(var c=b.querySelectorAll("*"),d=0,e=c.length;d 4096 bytes)!"));else{if(p.cookie!==y)for(y=p.cookie,d=y.split("; "),fa={},f=0;fk&&this.remove(q.key),b},get:function(a){if(k").parent()[0])});var f=S(a,b,a,c,d,e);D.$$addScopeClass(a); +var g=null;return function(b,c,d){Rb(b,"scope");d=d||{};var e=d.parentBoundTranscludeFn,h=d.transcludeControllers;d=d.futureParentElement;e&&e.$$boundTransclude&&(e=e.$$boundTransclude);g||(g=(d=d&&d[0])?"foreignobject"!==va(d)&&d.toString().match(/SVG/)?"svg":"html":"html");d="html"!==g?A(Xb(g,A("
    ").append(a).html())):c?Ka.clone.call(a):a;if(h)for(var k in h)d.data("$"+k+"Controller",h[k].instance);D.$$addScopeInfo(d,b);c&&c(d,b);f&&f(b,d,d,e);return d}}function S(a,b,c,d,e,f){function g(a, +c,d,e){var f,k,l,q,p,s,M;if(m)for(M=Array(c.length),q=0;qK.priority)break;if(V=K.scope)K.templateUrl||(J(V)?(Na("new/isolated scope",P||F,K,w),P=K):Na("new/isolated scope",P,K,w)),F=F||K;da=K.name;!K.templateUrl&&K.controller&&(V=K.controller,S=S||{},Na("'"+da+"' controller",S[da],K,w),S[da]=K);if(V=K.transclude)ka=!0,K.$$tlb||(Na("transclusion",fa,K,w),fa=K),"element"==V?(E=!0,I=K.priority,V=w,w=e.$$element=A(W.createComment(" "+da+": "+ +e[da]+" ")),d=w[0],T(g,Za.call(V,0),d),fb=D(V,f,I,k&&k.name,{nonTlbTranscludeDirective:fa})):(V=A(Ub(d)).contents(),w.empty(),fb=D(V,f));if(K.template)if(x=!0,Na("template",ma,K,w),ma=K,V=G(K.template)?K.template(w,e):K.template,V=Tc(V),K.replace){k=K;V=Sb.test(V)?Uc(Xb(K.templateNamespace,N(V))):[];d=V[0];if(1!=V.length||d.nodeType!==qa)throw la("tplrt",da,"");T(g,w,d);Q={$attr:{}};V=X(d,[],Q);var aa=a.splice(z+1,a.length-(z+1));P&&y(V);a=a.concat(V).concat(aa);R(e,Q);Q=a.length}else w.html(V);if(K.templateUrl)x= +!0,Na("template",ma,K,w),ma=K,K.replace&&(k=K),B=of(a.splice(z,a.length-z),w,e,g,ka&&fb,l,p,{controllerDirectives:S,newIsolateScopeDirective:P,templateDirective:ma,nonTlbTranscludeDirective:fa}),Q=a.length;else if(K.compile)try{za=K.compile(w,e,fb),G(za)?s(null,za,Oa,U):za&&s(za.pre,za.post,Oa,U)}catch(pf){c(pf,wa(w))}K.terminal&&(B.terminal=!0,I=Math.max(I,K.priority))}B.scope=F&&!0===F.scope;B.transcludeOnThisElement=ka;B.elementTranscludeOnThisElement=E;B.templateOnThisElement=x;B.transclude=fb; +m.hasElementTranscludeDirective=E;return B}function y(a){for(var b=0,c=a.length;bq.priority)&&-1!=q.restrict.indexOf(f)&&(k&&(q=Ob(q,{$$start:k,$$end:l})),b.push(q),h=q)}catch(M){c(M)}}return h}function x(b){if(d.hasOwnProperty(b))for(var c=a.get(b+"Directive"),e=0,f=c.length;e"+b+"";return c.childNodes[0].childNodes;default:return b}} +function Q(a,b){if("srcdoc"==b)return Z.HTML;var c=va(a);if("xlinkHref"==b||"form"==c&&"action"==b||"img"!=c&&("src"==b||"ngSrc"==b))return Z.RESOURCE_URL}function Oa(a,c,d,e,f){var h=Q(a,e);f=g[e]||f;var k=b(d,!0,h,f);if(k){if("multiple"===e&&"select"===va(a))throw la("selmulti",wa(a));c.push({priority:100,compile:function(){return{pre:function(a,c,g){c=g.$$observers||(g.$$observers={});if(l.test(e))throw la("nodomevents");var m=g[e];m!==d&&(k=m&&b(m,!0,h,f),d=m);k&&(g[e]=k(a),(c[e]||(c[e]=[])).$$inter= +!0,(g.$$observers&&g.$$observers[e].$$scope||a).$watch(k,function(a,b){"class"===e&&a!=b?g.$updateClass(a,b):g.$set(e,a)}))}}}})}}function T(a,b,c){var d=b[0],e=b.length,f=d.parentNode,g,h;if(a)for(g=0,h=a.length;g=a)return b;for(;a--;)8===b[a].nodeType&&qf.call(b,a,1);return b}function Fe(){var b={},a=!1,c=/^(\S+)(\s+as\s+(\w+))?$/;this.register=function(a,c){La(a, +"controller");J(a)?w(b,a):b[a]=c};this.allowGlobals=function(){a=!0};this.$get=["$injector","$window",function(d,e){function f(a,b,c,d){if(!a||!J(a.$scope))throw R("$controller")("noscp",d,b);a.$scope[b]=c}return function(g,h,l,k){var n,p,q;l=!0===l;k&&C(k)&&(q=k);if(C(g)){k=g.match(c);if(!k)throw rf("ctrlfmt",g);p=k[1];q=q||k[3];g=b.hasOwnProperty(p)?b[p]:xc(h.$scope,p,!0)||(a?xc(e,p,!0):t);sb(g,p,!0)}if(l)return l=(H(g)?g[g.length-1]:g).prototype,n=Object.create(l||null),q&&f(h,q,n,p||g.name),w(function(){d.invoke(g, +n,h,p);return n},{instance:n,identifier:q});n=d.instantiate(g,h,p);q&&f(h,q,n,p||g.name);return n}}]}function Ge(){this.$get=["$window",function(b){return A(b.document)}]}function He(){this.$get=["$log",function(b){return function(a,c){b.error.apply(b,arguments)}}]}function Zb(b,a){if(C(b)){var c=b.replace(sf,"").trim();if(c){var d=a("Content-Type");(d=d&&0===d.indexOf(Wc))||(d=(d=c.match(tf))&&uf[d[0]].test(c));d&&(b=qc(c))}}return b}function Xc(b){var a=ia(),c,d,e;if(!b)return a;r(b.split("\n"), +function(b){e=b.indexOf(":");c=z(N(b.substr(0,e)));d=N(b.substr(e+1));c&&(a[c]=a[c]?a[c]+", "+d:d)});return a}function Yc(b){var a=J(b)?b:t;return function(c){a||(a=Xc(b));return c?(c=a[z(c)],void 0===c&&(c=null),c):a}}function Zc(b,a,c,d){if(G(d))return d(b,a,c);r(d,function(d){b=d(b,a,c)});return b}function Ke(){var b=this.defaults={transformResponse:[Zb],transformRequest:[function(a){return J(a)&&"[object File]"!==Ca.call(a)&&"[object Blob]"!==Ca.call(a)&&"[object FormData]"!==Ca.call(a)?$a(a): +a}],headers:{common:{Accept:"application/json, text/plain, */*"},post:sa($b),put:sa($b),patch:sa($b)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"},a=!1;this.useApplyAsync=function(b){return y(b)?(a=!!b,this):a};var c=this.interceptors=[];this.$get=["$httpBackend","$browser","$cacheFactory","$rootScope","$q","$injector",function(d,e,f,g,h,l){function k(a){function c(a){var b=w({},a);b.data=a.data?Zc(a.data,a.headers,a.status,e.transformResponse):a.data;a=a.status;return 200<=a&&300>a? +b:h.reject(b)}function d(a){var b,c={};r(a,function(a,d){G(a)?(b=a(),null!=b&&(c[d]=b)):c[d]=a});return c}if(!ca.isObject(a))throw R("$http")("badreq",a);var e=w({method:"get",transformRequest:b.transformRequest,transformResponse:b.transformResponse},a);e.headers=function(a){var c=b.headers,e=w({},a.headers),f,g,c=w({},c.common,c[z(a.method)]);a:for(f in c){a=z(f);for(g in e)if(z(g)===a)continue a;e[f]=c[f]}return d(e)}(a);e.method=ub(e.method);var f=[function(a){var d=a.headers,e=Zc(a.data,Yc(d), +t,a.transformRequest);x(e)&&r(d,function(a,b){"content-type"===z(b)&&delete d[b]});x(a.withCredentials)&&!x(b.withCredentials)&&(a.withCredentials=b.withCredentials);return n(a,e).then(c,c)},t],g=h.when(e);for(r(u,function(a){(a.request||a.requestError)&&f.unshift(a.request,a.requestError);(a.response||a.responseError)&&f.push(a.response,a.responseError)});f.length;){a=f.shift();var k=f.shift(),g=g.then(a,k)}g.success=function(a){g.then(function(b){a(b.data,b.status,b.headers,e)});return g};g.error= +function(a){g.then(null,function(b){a(b.data,b.status,b.headers,e)});return g};return g}function n(c,f){function l(b,c,d,e){function f(){m(c,b,d,e)}I&&(200<=b&&300>b?I.put(P,[b,c,Xc(d),e]):I.remove(P));a?g.$applyAsync(f):(f(),g.$$phase||g.$apply())}function m(a,b,d,e){b=Math.max(b,0);(200<=b&&300>b?L.resolve:L.reject)({data:a,status:b,headers:Yc(d),config:c,statusText:e})}function n(a){m(a.data,a.status,sa(a.headers()),a.statusText)}function u(){var a=k.pendingRequests.indexOf(c);-1!==a&&k.pendingRequests.splice(a, +1)}var L=h.defer(),B=L.promise,I,D,S=c.headers,P=p(c.url,c.params);k.pendingRequests.push(c);B.then(u,u);!c.cache&&!b.cache||!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method||(I=J(c.cache)?c.cache:J(b.cache)?b.cache:q);I&&(D=I.get(P),y(D)?D&&G(D.then)?D.then(n,n):H(D)?m(D[1],D[0],sa(D[2]),D[3]):m(D,200,{},"OK"):I.put(P,B));x(D)&&((D=$c(c.url)?e.cookies()[c.xsrfCookieName||b.xsrfCookieName]:t)&&(S[c.xsrfHeaderName||b.xsrfHeaderName]=D),d(c.method,P,f,l,S,c.timeout,c.withCredentials,c.responseType)); +return B}function p(a,b){if(!b)return a;var c=[];Ed(b,function(a,b){null===a||x(a)||(H(a)||(a=[a]),r(a,function(a){J(a)&&(a=ga(a)?a.toISOString():$a(a));c.push(Ea(b)+"="+Ea(a))}))});0=l&&(s.resolve(q),p(M.$$intervalId),delete f[M.$$intervalId]);u||b.$apply()},h);f[M.$$intervalId]=s;return M}var f={};e.cancel=function(b){return b&&b.$$intervalId in f?(f[b.$$intervalId].reject("canceled"),a.clearInterval(b.$$intervalId), +delete f[b.$$intervalId],!0):!1};return e}]}function Rd(){this.$get=function(){return{id:"en-us",NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,posPre:"",posSuf:"",negPre:"-",negSuf:"",gSize:3,lgSize:3},{minInt:1,minFrac:2,maxFrac:2,posPre:"\u00a4",posSuf:"",negPre:"(\u00a4",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"$"},DATETIME_FORMATS:{MONTH:"January February March April May June July August September October November December".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "), +DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),AMPMS:["AM","PM"],medium:"MMM d, y h:mm:ss a","short":"M/d/yy h:mm a",fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",mediumDate:"MMM d, y",shortDate:"M/d/yy",mediumTime:"h:mm:ss a",shortTime:"h:mm a",ERANAMES:["Before Christ","Anno Domini"],ERAS:["BC","AD"]},pluralCat:function(b){return 1===b?"one":"other"}}}}function bc(b){b=b.split("/");for(var a=b.length;a--;)b[a]=qb(b[a]); +return b.join("/")}function ad(b,a){var c=Aa(b);a.$$protocol=c.protocol;a.$$host=c.hostname;a.$$port=aa(c.port)||xf[c.protocol]||null}function bd(b,a){var c="/"!==b.charAt(0);c&&(b="/"+b);var d=Aa(b);a.$$path=decodeURIComponent(c&&"/"===d.pathname.charAt(0)?d.pathname.substring(1):d.pathname);a.$$search=sc(d.search);a.$$hash=decodeURIComponent(d.hash);a.$$path&&"/"!=a.$$path.charAt(0)&&(a.$$path="/"+a.$$path)}function ya(b,a){if(0===a.indexOf(b))return a.substr(b.length)}function Ga(b){var a=b.indexOf("#"); +return-1==a?b:b.substr(0,a)}function Fb(b){return b.replace(/(#.+)|#$/,"$1")}function cc(b){return b.substr(0,Ga(b).lastIndexOf("/")+1)}function dc(b,a){this.$$html5=!0;a=a||"";var c=cc(b);ad(b,this);this.$$parse=function(a){var b=ya(c,a);if(!C(b))throw Gb("ipthprfx",a,c);bd(b,this);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=Pb(this.$$search),b=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=bc(this.$$path)+(a?"?"+a:"")+b;this.$$absUrl=c+this.$$url.substr(1)};this.$$parseLinkUrl= +function(d,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;(f=ya(b,d))!==t?(g=f,g=(f=ya(a,f))!==t?c+(ya("/",f)||f):b+g):(f=ya(c,d))!==t?g=c+f:c==d+"/"&&(g=c);g&&this.$$parse(g);return!!g}}function ec(b,a){var c=cc(b);ad(b,this);this.$$parse=function(d){d=ya(b,d)||ya(c,d);var e;"#"===d.charAt(0)?(e=ya(a,d),x(e)&&(e=d)):e=this.$$html5?d:"";bd(e,this);d=this.$$path;var f=/^\/[A-Z]:(\/.*)/;0===e.indexOf(b)&&(e=e.replace(b,""));f.exec(e)||(d=(e=f.exec(d))?e[1]:d);this.$$path=d;this.$$compose()}; +this.$$compose=function(){var c=Pb(this.$$search),e=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=bc(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+(this.$$url?a+this.$$url:"")};this.$$parseLinkUrl=function(a,c){return Ga(b)==Ga(a)?(this.$$parse(a),!0):!1}}function cd(b,a){this.$$html5=!0;ec.apply(this,arguments);var c=cc(b);this.$$parseLinkUrl=function(d,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;b==Ga(d)?f=d:(g=ya(c,d))?f=b+a+g:c===d+"/"&&(f=c);f&&this.$$parse(f);return!!f};this.$$compose= +function(){var c=Pb(this.$$search),e=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=bc(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+a+this.$$url}}function Hb(b){return function(){return this[b]}}function dd(b,a){return function(c){if(x(c))return this[b];this[b]=a(c);this.$$compose();return this}}function Me(){var b="",a={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(a){return y(a)?(b=a,this):b};this.html5Mode=function(b){return Wa(b)?(a.enabled=b,this):J(b)?(Wa(b.enabled)&&(a.enabled= +b.enabled),Wa(b.requireBase)&&(a.requireBase=b.requireBase),Wa(b.rewriteLinks)&&(a.rewriteLinks=b.rewriteLinks),this):a};this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(c,d,e,f,g){function h(a,b,c){var e=k.url(),f=k.$$state;try{d.url(a,b,c),k.$$state=d.state()}catch(g){throw k.url(e),k.$$state=f,g;}}function l(a,b){c.$broadcast("$locationChangeSuccess",k.absUrl(),a,k.$$state,b)}var k,n;n=d.baseHref();var p=d.url(),q;if(a.enabled){if(!n&&a.requireBase)throw Gb("nobase"); +q=p.substring(0,p.indexOf("/",p.indexOf("//")+2))+(n||"/");n=e.history?dc:cd}else q=Ga(p),n=ec;k=new n(q,"#"+b);k.$$parseLinkUrl(p,p);k.$$state=d.state();var u=/^\s*(javascript|mailto):/i;f.on("click",function(b){if(a.rewriteLinks&&!b.ctrlKey&&!b.metaKey&&!b.shiftKey&&2!=b.which&&2!=b.button){for(var e=A(b.target);"a"!==va(e[0]);)if(e[0]===f[0]||!(e=e.parent())[0])return;var h=e.prop("href"),l=e.attr("href")||e.attr("xlink:href");J(h)&&"[object SVGAnimatedString]"===h.toString()&&(h=Aa(h.animVal).href); +u.test(h)||!h||e.attr("target")||b.isDefaultPrevented()||!k.$$parseLinkUrl(h,l)||(b.preventDefault(),k.absUrl()!=d.url()&&(c.$apply(),g.angular["ff-684208-preventDefault"]=!0))}});Fb(k.absUrl())!=Fb(p)&&d.url(k.absUrl(),!0);var s=!0;d.onUrlChange(function(a,b){c.$evalAsync(function(){var d=k.absUrl(),e=k.$$state,f;k.$$parse(a);k.$$state=b;f=c.$broadcast("$locationChangeStart",a,d,b,e).defaultPrevented;k.absUrl()===a&&(f?(k.$$parse(d),k.$$state=e,h(d,!1,e)):(s=!1,l(d,e)))});c.$$phase||c.$digest()}); +c.$watch(function(){var a=Fb(d.url()),b=Fb(k.absUrl()),f=d.state(),g=k.$$replace,q=a!==b||k.$$html5&&e.history&&f!==k.$$state;if(s||q)s=!1,c.$evalAsync(function(){var b=k.absUrl(),d=c.$broadcast("$locationChangeStart",b,a,k.$$state,f).defaultPrevented;k.absUrl()===b&&(d?(k.$$parse(a),k.$$state=f):(q&&h(b,g,f===k.$$state?null:k.$$state),l(a,f)))});k.$$replace=!1});return k}]}function Ne(){var b=!0,a=this;this.debugEnabled=function(a){return y(a)?(b=a,this):b};this.$get=["$window",function(c){function d(a){a instanceof +Error&&(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function e(a){var b=c.console||{},e=b[a]||b.log||E;a=!1;try{a=!!e.apply}catch(l){}return a?function(){var a=[];r(arguments,function(b){a.push(d(b))});return e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"),debug:function(){var c=e("debug");return function(){b&&c.apply(a, +arguments)}}()}}]}function ua(b,a){if("__defineGetter__"===b||"__defineSetter__"===b||"__lookupGetter__"===b||"__lookupSetter__"===b||"__proto__"===b)throw na("isecfld",a);return b}function oa(b,a){if(b){if(b.constructor===b)throw na("isecfn",a);if(b.window===b)throw na("isecwindow",a);if(b.children&&(b.nodeName||b.prop&&b.attr&&b.find))throw na("isecdom",a);if(b===Object)throw na("isecobj",a);}return b}function fc(b){return b.constant}function hb(b,a,c,d,e){oa(b,e);oa(a,e);c=c.split(".");for(var f, +g=0;1h?ed(g[0],g[1],g[2],g[3],g[4],c,d):function(a,b){var e=0,f;do f=ed(g[e++],g[e++],g[e++],g[e++],g[e++],c,d)(a,b),b=t,a=f;while(e=this.promise.$$state.status&&d&&d.length&&b(function(){for(var b,e,f=0,g=d.length;fa)for(b in l++,f)e.hasOwnProperty(b)||(u--,delete f[b])}else f!==e&&(f=e,l++);return l}}c.$stateful=!0;var d=this,e,f,g,k=1r&&(M=4-r,O[M]||(O[M]=[]),O[M].push({msg:G(b.exp)?"fn: "+(b.exp.name||b.exp.toString()):b.exp,newVal:f,oldVal:h}));else if(b=== +d){n=!1;break a}}catch(A){g(A)}if(!(k=t.$$childHead||t!==this&&t.$$nextSibling))for(;t!==this&&!(k=t.$$nextSibling);)t=t.$parent}while(t=k);if((n||m.length)&&!r--)throw v.$$phase=null,c("infdig",a,O);}while(n||m.length);for(v.$$phase=null;F.length;)try{F.shift()()}catch(x){g(x)}},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;if(this!==v){for(var b in this.$$listenerCount)q(this,this.$$listenerCount[b],b);a.$$childHead==this&&(a.$$childHead= +this.$$nextSibling);a.$$childTail==this&&(a.$$childTail=this.$$prevSibling);this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling);this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling);this.$destroy=this.$digest=this.$apply=this.$evalAsync=this.$applyAsync=E;this.$on=this.$watch=this.$watchGroup=function(){return E};this.$$listeners={};this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=this.$root=this.$$watchers=null}}},$eval:function(a, +b){return h(a)(this,b)},$evalAsync:function(a,b){v.$$phase||m.length||l.defer(function(){m.length&&v.$digest()});m.push({scope:this,expression:a,locals:b})},$$postDigest:function(a){F.push(a)},$apply:function(a){try{return p("$apply"),this.$eval(a)}catch(b){g(b)}finally{v.$$phase=null;try{v.$digest()}catch(c){throw g(c),c;}}},$applyAsync:function(a){function b(){c.$eval(a)}var c=this;a&&t.push(b);M()},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=c=[]);c.push(b);var d=this;do d.$$listenerCount[a]|| +(d.$$listenerCount[a]=0),d.$$listenerCount[a]++;while(d=d.$parent);var e=this;return function(){var d=c.indexOf(b);-1!==d&&(c[d]=null,q(e,1,a))}},$emit:function(a,b){var c=[],d,e=this,f=!1,h={name:a,targetScope:e,stopPropagation:function(){f=!0},preventDefault:function(){h.defaultPrevented=!0},defaultPrevented:!1},k=Ya([h],arguments,1),l,q;do{d=e.$$listeners[a]||c;h.currentScope=e;l=0;for(q=d.length;lQa)throw Ba("iequirks");var d=sa(pa);d.isEnabled=function(){return b};d.trustAs=c.trustAs;d.getTrusted=c.getTrusted;d.valueOf=c.valueOf;b||(d.trustAs= +d.getTrusted=function(a,b){return b},d.valueOf=ra);d.parseAs=function(b,c){var e=a(c);return e.literal&&e.constant?e:a(c,function(a){return d.getTrusted(b,a)})};var e=d.parseAs,f=d.getTrusted,g=d.trustAs;r(pa,function(a,b){var c=z(b);d[db("parse_as_"+c)]=function(b){return e(a,b)};d[db("get_trusted_"+c)]=function(b){return f(a,b)};d[db("trust_as_"+c)]=function(b){return g(a,b)}});return d}]}function Ue(){this.$get=["$window","$document",function(b,a){var c={},d=aa((/android (\d+)/.exec(z((b.navigator|| +{}).userAgent))||[])[1]),e=/Boxee/i.test((b.navigator||{}).userAgent),f=a[0]||{},g,h=/^(Moz|webkit|ms)(?=[A-Z])/,l=f.body&&f.body.style,k=!1,n=!1;if(l){for(var p in l)if(k=h.exec(p)){g=k[0];g=g.substr(0,1).toUpperCase()+g.substr(1);break}g||(g="WebkitOpacity"in l&&"webkit");k=!!("transition"in l||g+"Transition"in l);n=!!("animation"in l||g+"Animation"in l);!d||k&&n||(k=C(f.body.style.webkitTransition),n=C(f.body.style.webkitAnimation))}return{history:!(!b.history||!b.history.pushState||4>d||e),hasEvent:function(a){if("input"=== +a&&11>=Qa)return!1;if(x(c[a])){var b=f.createElement("div");c[a]="on"+a in b}return c[a]},csp:bb(),vendorPrefix:g,transitions:k,animations:n,android:d}}]}function We(){this.$get=["$templateCache","$http","$q",function(b,a,c){function d(e,f){d.totalPendingRequests++;var g=a.defaults&&a.defaults.transformResponse;H(g)?g=g.filter(function(a){return a!==Zb}):g===Zb&&(g=null);return a.get(e,{cache:b,transformResponse:g})["finally"](function(){d.totalPendingRequests--}).then(function(a){return a.data}, +function(a){if(!f)throw la("tpload",e);return c.reject(a)})}d.totalPendingRequests=0;return d}]}function Xe(){this.$get=["$rootScope","$browser","$location",function(b,a,c){return{findBindings:function(a,b,c){a=a.getElementsByClassName("ng-binding");var g=[];r(a,function(a){var d=ca.element(a).data("$binding");d&&r(d,function(d){c?(new RegExp("(^|\\s)"+gd(b)+"(\\s|\\||$)")).test(d)&&g.push(a):-1!=d.indexOf(b)&&g.push(a)})});return g},findModels:function(a,b,c){for(var g=["ng-","data-ng-","ng\\:"], +h=0;hb;b=Math.abs(b);var g=b+"",h="",l=[],k=!1;if(-1!==g.indexOf("e")){var n=g.match(/([\d\.]+)e(-?)(\d+)/);n&&"-"==n[2]&&n[3]>e+1?b=0:(h=g,k=!0)}if(k)0b&&(h=b.toFixed(e),b=parseFloat(h));else{g=(g.split(od)[1]|| +"").length;x(e)&&(e=Math.min(Math.max(a.minFrac,g),a.maxFrac));b=+(Math.round(+(b.toString()+"e"+e)).toString()+"e"+-e);var g=(""+b).split(od),k=g[0],g=g[1]||"",p=0,q=a.lgSize,u=a.gSize;if(k.length>=q+u)for(p=k.length-q,n=0;nb&&(d="-",b=-b);for(b=""+b;b.length-c)e+=c;0===e&&-12==c&&(e=12);return Ib(e,a,d)}}function Jb(b,a){return function(c,d){var e=c["get"+b](),f=ub(a?"SHORT"+b:b);return d[f][e]}}function pd(b){var a=(new Date(b,0,1)).getDay();return new Date(b,0,(4>=a?5:12)-a)}function qd(b){return function(a){var c=pd(a.getFullYear());a=+new Date(a.getFullYear(),a.getMonth(),a.getDate()+ +(4-a.getDay()))-+c;a=1+Math.round(a/6048E5);return Ib(a,b)}}function ic(b,a){return 0>=b.getFullYear()?a.ERAS[0]:a.ERAS[1]}function kd(b){function a(a){var b;if(b=a.match(c)){a=new Date(0);var f=0,g=0,h=b[8]?a.setUTCFullYear:a.setFullYear,l=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=aa(b[9]+b[10]),g=aa(b[9]+b[11]));h.call(a,aa(b[1]),aa(b[2])-1,aa(b[3]));f=aa(b[4]||0)-f;g=aa(b[5]||0)-g;h=aa(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));l.call(a,f,g,h,b)}return a}var c=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/; +return function(c,e,f){var g="",h=[],l,k;e=e||"mediumDate";e=b.DATETIME_FORMATS[e]||e;C(c)&&(c=Kf.test(c)?aa(c):a(c));Y(c)&&(c=new Date(c));if(!ga(c))return c;for(;e;)(k=Lf.exec(e))?(h=Ya(h,k,1),e=h.pop()):(h.push(e),e=null);f&&"UTC"===f&&(c=new Date(c.getTime()),c.setMinutes(c.getMinutes()+c.getTimezoneOffset()));r(h,function(a){l=Mf[a];g+=l?l(c,b.DATETIME_FORMATS):a.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function Ff(){return function(b,a){x(a)&&(a=2);return $a(b,a)}}function Gf(){return function(b, +a){Y(b)&&(b=b.toString());return H(b)||C(b)?(a=Infinity===Math.abs(Number(a))?Number(a):aa(a))?0b||37<=b&&40>=b||n(a,this,this.value)});if(e.hasEvent("paste"))a.on("paste cut",n)}a.on("change",l);d.$render=function(){a.val(d.$isEmpty(d.$viewValue)?"":d.$viewValue)}}function Mb(b,a){return function(c,d){var e,f;if(ga(c))return c;if(C(c)){'"'==c.charAt(0)&&'"'==c.charAt(c.length-1)&&(c=c.substring(1,c.length-1));if(Nf.test(c))return new Date(c);b.lastIndex= +0;if(e=b.exec(c))return e.shift(),f=d?{yyyy:d.getFullYear(),MM:d.getMonth()+1,dd:d.getDate(),HH:d.getHours(),mm:d.getMinutes(),ss:d.getSeconds(),sss:d.getMilliseconds()/1E3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},r(e,function(b,c){c=r}; +g.$observe("min",function(a){r=q(a);h.$validate()})}if(y(g.max)||g.ngMax){var v;h.$validators.max=function(a){return!p(a)||x(v)||c(a)<=v};g.$observe("max",function(a){v=q(a);h.$validate()})}}}function td(b,a,c,d){(d.$$hasNativeValidators=J(a[0].validity))&&d.$parsers.push(function(b){var c=a.prop("validity")||{};return c.badInput&&!c.typeMismatch?t:b})}function ud(b,a,c,d,e){if(y(d)){b=b(d);if(!b.constant)throw R("ngModel")("constexpr",c,d);return b(a)}return e}function kc(b,a){b="ngClass"+b;return["$animate", +function(c){function d(a,b){var c=[],d=0;a:for(;d(?:<\/\1>|)$/,Sb=/<|&#?\w+;/,ef=/<([\w:]+)/,ff=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ja={option:[1,'"],thead:[1,"","
    "],col:[2,"", +"
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};ja.optgroup=ja.option;ja.tbody=ja.tfoot=ja.colgroup=ja.caption=ja.thead;ja.th=ja.td;var Ka=T.prototype={ready:function(b){function a(){c||(c=!0,b())}var c=!1;"complete"===W.readyState?setTimeout(a):(this.on("DOMContentLoaded",a),T(Q).on("load",a))},toString:function(){var b=[];r(this,function(a){b.push(""+a)});return"["+b.join(", ")+"]"},eq:function(b){return 0<= +b?A(this[b]):A(this[this.length+b])},length:0,push:Pf,sort:[].sort,splice:[].splice},Eb={};r("multiple selected checked disabled readOnly required open".split(" "),function(b){Eb[z(b)]=b});var Oc={};r("input select option textarea button form details".split(" "),function(b){Oc[b]=!0});var Pc={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};r({data:Vb,removeData:xb},function(b,a){T[a]=b});r({data:Vb,inheritedData:Db,scope:function(b){return A.data(b,"$scope")|| +Db(b.parentNode||b,["$isolateScope","$scope"])},isolateScope:function(b){return A.data(b,"$isolateScope")||A.data(b,"$isolateScopeNoTemplate")},controller:Kc,injector:function(b){return Db(b,"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:Ab,css:function(b,a,c){a=db(a);if(y(c))b.style[a]=c;else return b.style[a]},attr:function(b,a,c){var d=z(a);if(Eb[d])if(y(c))c?(b[a]=!0,b.setAttribute(a,d)):(b[a]=!1,b.removeAttribute(d));else return b[a]||(b.attributes.getNamedItem(a)||E).specified? +d:t;else if(y(c))b.setAttribute(a,c);else if(b.getAttribute)return b=b.getAttribute(a,2),null===b?t:b},prop:function(b,a,c){if(y(c))b[a]=c;else return b[a]},text:function(){function b(a,b){if(x(b)){var d=a.nodeType;return d===qa||d===pb?a.textContent:""}a.textContent=b}b.$dv="";return b}(),val:function(b,a){if(x(a)){if(b.multiple&&"select"===va(b)){var c=[];r(b.options,function(a){a.selected&&c.push(a.value||a.text)});return 0===c.length?null:c}return b.value}b.value=a},html:function(b,a){if(x(a))return b.innerHTML; +wb(b,!0);b.innerHTML=a},empty:Lc},function(b,a){T.prototype[a]=function(a,d){var e,f,g=this.length;if(b!==Lc&&(2==b.length&&b!==Ab&&b!==Kc?a:d)===t){if(J(a)){for(e=0;e":function(a,c,d,e){return d(a,c)>e(a,c)},"<=":function(a,c,d,e){return d(a,c)<=e(a,c)},">=":function(a,c,d,e){return d(a,c)>=e(a,c)},"&&":function(a,c,d,e){return d(a,c)&&e(a,c)}, +"||":function(a,c,d,e){return d(a,c)||e(a,c)},"!":function(a,c,d){return!d(a,c)},"=":!0,"|":!0}),Zf={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},hc=function(a){this.options=a};hc.prototype={constructor:hc,lex:function(a){this.text=a;this.index=0;for(this.tokens=[];this.index=a&&"string"===typeof a},isWhitespace:function(a){return" "===a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdent:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,c,d){d=d||this.index;c=y(c)?"s "+c+"-"+this.index+" ["+this.text.substring(c,d)+"]":" "+d;throw na("lexerr",a,c,this.text);},readNumber:function(){for(var a="",c=this.index;this.index< +this.text.length;){var d=z(this.text.charAt(this.index));if("."==d||this.isNumber(d))a+=d;else{var e=this.peek();if("e"==d&&this.isExpOperator(e))a+=d;else if(this.isExpOperator(d)&&e&&this.isNumber(e)&&"e"==a.charAt(a.length-1))a+=d;else if(!this.isExpOperator(d)||e&&this.isNumber(e)||"e"!=a.charAt(a.length-1))break;else this.throwError("Invalid exponent")}this.index++}this.tokens.push({index:c,text:a,constant:!0,value:Number(a)})},readIdent:function(){for(var a=this.index;this.indexa){a=this.tokens[a];var g=a.text;if(g===c||g===d||g===e||g=== +f||!(c||d||e||f))return a}return!1},expect:function(a,c,d,e){return(a=this.peek(a,c,d,e))?(this.tokens.shift(),a):!1},consume:function(a){if(0===this.tokens.length)throw na("ueoe",this.text);var c=this.expect(a);c||this.throwError("is unexpected, expecting ["+a+"]",this.peek());return c},unaryFn:function(a,c){var d=nb[a];return w(function(a,f){return d(a,f,c)},{constant:c.constant,inputs:[c]})},binaryFn:function(a,c,d,e){var f=nb[c];return w(function(c,e){return f(c,e,a,d)},{constant:a.constant&& +d.constant,inputs:!e&&[a,d]})},identifier:function(){for(var a=this.consume().text;this.peek(".")&&this.peekAhead(1).identifier&&!this.peekAhead(2,"(");)a+=this.consume().text+this.consume().text;return zf(a,this.options,this.text)},constant:function(){var a=this.consume().value;return w(function(){return a},{constant:!0,literal:!0})},statements:function(){for(var a=[];;)if(0","<=",">=");)a=this.binaryFn(a,c.text, +this.additive());return a},additive:function(){for(var a=this.multiplicative(),c;c=this.expect("+","-");)a=this.binaryFn(a,c.text,this.multiplicative());return a},multiplicative:function(){for(var a=this.unary(),c;c=this.expect("*","/","%");)a=this.binaryFn(a,c.text,this.unary());return a},unary:function(){var a;return this.expect("+")?this.primary():(a=this.expect("-"))?this.binaryFn(ib.ZERO,a.text,this.unary()):(a=this.expect("!"))?this.unaryFn(a.text,this.unary()):this.primary()},fieldAccess:function(a){var c= +this.identifier();return w(function(d,e,f){d=f||a(d,e);return null==d?t:c(d)},{assign:function(d,e,f){var g=a(d,f);g||a.assign(d,g={},f);return c.assign(g,e)}})},objectIndex:function(a){var c=this.text,d=this.expression();this.consume("]");return w(function(e,f){var g=a(e,f),h=d(e,f);ua(h,c);return g?oa(g[h],c):t},{assign:function(e,f,g){var h=ua(d(e,g),c),l=oa(a(e,g),c);l||a.assign(e,l={},g);return l[h]=f}})},functionCall:function(a,c){var d=[];if(")"!==this.peekToken().text){do d.push(this.expression()); +while(this.expect(","))}this.consume(")");var e=this.text,f=d.length?[]:null;return function(g,h){var l=c?c(g,h):y(c)?t:g,k=a(g,h,l)||E;if(f)for(var n=d.length;n--;)f[n]=oa(d[n](g,h),e);oa(l,e);if(k){if(k.constructor===k)throw na("isecfn",e);if(k===Wf||k===Xf||k===Yf)throw na("isecff",e);}l=k.apply?k.apply(l,f):k(f[0],f[1],f[2],f[3],f[4]);f&&(f.length=0);return oa(l,e)}},arrayDeclaration:function(){var a=[];if("]"!==this.peekToken().text){do{if(this.peek("]"))break;a.push(this.expression())}while(this.expect(",")) +}this.consume("]");return w(function(c,d){for(var e=[],f=0,g=a.length;fa.getHours()?c.AMPMS[0]:c.AMPMS[1]},Z:function(a){a=-1*a.getTimezoneOffset();return a=(0<=a?"+":"")+(Ib(Math[0=a.getFullYear()?c.ERANAMES[0]:c.ERANAMES[1]}},Lf=/((?:[^yMdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/, +Kf=/^\-?\d+$/;kd.$inject=["$locale"];var Hf=ea(z),If=ea(ub);md.$inject=["$parse"];var Td=ea({restrict:"E",compile:function(a,c){if(!c.href&&!c.xlinkHref&&!c.name)return function(a,c){if("a"===c[0].nodeName.toLowerCase()){var f="[object SVGAnimatedString]"===Ca.call(c.prop("href"))?"xlink:href":"href";c.on("click",function(a){c.attr(f)||a.preventDefault()})}}}}),vb={};r(Eb,function(a,c){if("multiple"!=a){var d=xa("ng-"+c);vb[d]=function(){return{restrict:"A",priority:100,link:function(a,f,g){a.$watch(g[d], +function(a){g.$set(c,!!a)})}}}}});r(Pc,function(a,c){vb[c]=function(){return{priority:100,link:function(a,e,f){if("ngPattern"===c&&"/"==f.ngPattern.charAt(0)&&(e=f.ngPattern.match(Of))){f.$set("ngPattern",new RegExp(e[1],e[2]));return}a.$watch(f[c],function(a){f.$set(c,a)})}}}});r(["src","srcset","href"],function(a){var c=xa("ng-"+a);vb[c]=function(){return{priority:99,link:function(d,e,f){var g=a,h=a;"href"===a&&"[object SVGAnimatedString]"===Ca.call(e.prop("href"))&&(h="xlinkHref",f.$attr[h]="xlink:href", +g=null);f.$observe(c,function(c){c?(f.$set(h,c),Qa&&g&&e.prop(g,f[h])):"href"===a&&f.$set(h,null)})}}}});var Kb={$addControl:E,$$renameControl:function(a,c){a.$name=c},$removeControl:E,$setValidity:E,$setDirty:E,$setPristine:E,$setSubmitted:E};rd.$inject=["$element","$attrs","$scope","$animate","$interpolate"];var yd=function(a){return["$timeout",function(c){return{name:"form",restrict:a?"EAC":"E",controller:rd,compile:function(d,e){d.addClass(Ra).addClass(lb);var f=e.name?"name":a&&e.ngForm?"ngForm": +!1;return{pre:function(a,d,e,k){if(!("action"in e)){var n=function(c){a.$apply(function(){k.$commitViewValue();k.$setSubmitted()});c.preventDefault()};d[0].addEventListener("submit",n,!1);d.on("$destroy",function(){c(function(){d[0].removeEventListener("submit",n,!1)},0,!1)})}var p=k.$$parentForm;f&&(hb(a,null,k.$name,k,k.$name),e.$observe(f,function(c){k.$name!==c&&(hb(a,null,k.$name,t,k.$name),p.$$renameControl(k,c),hb(a,null,k.$name,k,k.$name))}));d.on("$destroy",function(){p.$removeControl(k); +f&&hb(a,null,e[f],t,k.$name);w(k,Kb)})}}}}}]},Ud=yd(),ge=yd(!0),Nf=/\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/,$f=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,ag=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,bg=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,zd=/^(\d{4})-(\d{2})-(\d{2})$/,Ad=/^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,lc=/^(\d{4})-W(\d\d)$/,Bd=/^(\d{4})-(\d\d)$/, +Cd=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Dd={text:function(a,c,d,e,f,g){jb(a,c,d,e,f,g);jc(e)},date:kb("date",zd,Mb(zd,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":kb("datetimelocal",Ad,Mb(Ad,"yyyy MM dd HH mm ss sss".split(" ")),"yyyy-MM-ddTHH:mm:ss.sss"),time:kb("time",Cd,Mb(Cd,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:kb("week",lc,function(a,c){if(ga(a))return a;if(C(a)){lc.lastIndex=0;var d=lc.exec(a);if(d){var e=+d[1],f=+d[2],g=d=0,h=0,l=0,k=pd(e),f=7*(f-1);c&&(d=c.getHours(),g= +c.getMinutes(),h=c.getSeconds(),l=c.getMilliseconds());return new Date(e,0,k.getDate()+f,d,g,h,l)}}return NaN},"yyyy-Www"),month:kb("month",Bd,Mb(Bd,["yyyy","MM"]),"yyyy-MM"),number:function(a,c,d,e,f,g){td(a,c,d,e);jb(a,c,d,e,f,g);e.$$parserName="number";e.$parsers.push(function(a){return e.$isEmpty(a)?null:bg.test(a)?parseFloat(a):t});e.$formatters.push(function(a){if(!e.$isEmpty(a)){if(!Y(a))throw Nb("numfmt",a);a=a.toString()}return a});if(y(d.min)||d.ngMin){var h;e.$validators.min=function(a){return e.$isEmpty(a)|| +x(h)||a>=h};d.$observe("min",function(a){y(a)&&!Y(a)&&(a=parseFloat(a,10));h=Y(a)&&!isNaN(a)?a:t;e.$validate()})}if(y(d.max)||d.ngMax){var l;e.$validators.max=function(a){return e.$isEmpty(a)||x(l)||a<=l};d.$observe("max",function(a){y(a)&&!Y(a)&&(a=parseFloat(a,10));l=Y(a)&&!isNaN(a)?a:t;e.$validate()})}},url:function(a,c,d,e,f,g){jb(a,c,d,e,f,g);jc(e);e.$$parserName="url";e.$validators.url=function(a,c){var d=a||c;return e.$isEmpty(d)||$f.test(d)}},email:function(a,c,d,e,f,g){jb(a,c,d,e,f,g);jc(e); +e.$$parserName="email";e.$validators.email=function(a,c){var d=a||c;return e.$isEmpty(d)||ag.test(d)}},radio:function(a,c,d,e){x(d.name)&&c.attr("name",++ob);c.on("click",function(a){c[0].checked&&e.$setViewValue(d.value,a&&a.type)});e.$render=function(){c[0].checked=d.value==e.$viewValue};d.$observe("value",e.$render)},checkbox:function(a,c,d,e,f,g,h,l){var k=ud(l,a,"ngTrueValue",d.ngTrueValue,!0),n=ud(l,a,"ngFalseValue",d.ngFalseValue,!1);c.on("click",function(a){e.$setViewValue(c[0].checked,a&& +a.type)});e.$render=function(){c[0].checked=e.$viewValue};e.$isEmpty=function(a){return!1===a};e.$formatters.push(function(a){return ha(a,k)});e.$parsers.push(function(a){return a?k:n})},hidden:E,button:E,submit:E,reset:E,file:E},zc=["$browser","$sniffer","$filter","$parse",function(a,c,d,e){return{restrict:"E",require:["?ngModel"],link:{pre:function(f,g,h,l){l[0]&&(Dd[z(h.type)]||Dd.text)(f,g,h,l[0],c,a,d,e)}}}}],cg=/^(true|false|\d+)$/,ye=function(){return{restrict:"A",priority:100,compile:function(a, +c){return cg.test(c.ngValue)?function(a,c,f){f.$set("value",a.$eval(f.ngValue))}:function(a,c,f){a.$watch(f.ngValue,function(a){f.$set("value",a)})}}}},Zd=["$compile",function(a){return{restrict:"AC",compile:function(c){a.$$addBindingClass(c);return function(c,e,f){a.$$addBindingInfo(e,f.ngBind);e=e[0];c.$watch(f.ngBind,function(a){e.textContent=a===t?"":a})}}}}],ae=["$interpolate","$compile",function(a,c){return{compile:function(d){c.$$addBindingClass(d);return function(d,f,g){d=a(f.attr(g.$attr.ngBindTemplate)); +c.$$addBindingInfo(f,d.expressions);f=f[0];g.$observe("ngBindTemplate",function(a){f.textContent=a===t?"":a})}}}}],$d=["$sce","$parse","$compile",function(a,c,d){return{restrict:"A",compile:function(e,f){var g=c(f.ngBindHtml),h=c(f.ngBindHtml,function(a){return(a||"").toString()});d.$$addBindingClass(e);return function(c,e,f){d.$$addBindingInfo(e,f.ngBindHtml);c.$watch(h,function(){e.html(a.getTrustedHtml(g(c))||"")})}}}}],xe=ea({restrict:"A",require:"ngModel",link:function(a,c,d,e){e.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}), +be=kc("",!0),de=kc("Odd",0),ce=kc("Even",1),ee=Ia({compile:function(a,c){c.$set("ngCloak",t);a.removeClass("ng-cloak")}}),fe=[function(){return{restrict:"A",scope:!0,controller:"@",priority:500}}],Ec={},dg={blur:!0,focus:!0};r("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(a){var c=xa("ng-"+a);Ec[c]=["$parse","$rootScope",function(d,e){return{restrict:"A",compile:function(f,g){var h= +d(g[c],null,!0);return function(c,d){d.on(a,function(d){var f=function(){h(c,{$event:d})};dg[a]&&e.$$phase?c.$evalAsync(f):c.$apply(f)})}}}}]});var ie=["$animate",function(a){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(c,d,e,f,g){var h,l,k;c.$watch(e.ngIf,function(c){c?l||g(function(c,f){l=f;c[c.length++]=W.createComment(" end ngIf: "+e.ngIf+" ");h={clone:c};a.enter(c,d.parent(),d)}):(k&&(k.remove(),k=null),l&&(l.$destroy(),l=null),h&&(k= +tb(h.clone),a.leave(k).then(function(){k=null}),h=null))})}}}],je=["$templateRequest","$anchorScroll","$animate","$sce",function(a,c,d,e){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:ca.noop,compile:function(f,g){var h=g.ngInclude||g.src,l=g.onload||"",k=g.autoscroll;return function(f,g,q,r,s){var t=0,v,m,F,w=function(){m&&(m.remove(),m=null);v&&(v.$destroy(),v=null);F&&(d.leave(F).then(function(){m=null}),m=F,F=null)};f.$watch(e.parseAsResourceUrl(h),function(e){var h= +function(){!y(k)||k&&!f.$eval(k)||c()},m=++t;e?(a(e,!0).then(function(a){if(m===t){var c=f.$new();r.template=a;a=s(c,function(a){w();d.enter(a,null,g).then(h)});v=c;F=a;v.$emit("$includeContentLoaded",e);f.$eval(l)}},function(){m===t&&(w(),f.$emit("$includeContentError",e))}),f.$emit("$includeContentRequested",e)):(w(),r.template=null)})}}}}],Ae=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(c,d,e,f){/SVG/.test(d[0].toString())?(d.empty(),a(Hc(f.template, +W).childNodes)(c,function(a){d.append(a)},{futureParentElement:d})):(d.html(f.template),a(d.contents())(c))}}}],ke=Ia({priority:450,compile:function(){return{pre:function(a,c,d){a.$eval(d.ngInit)}}}}),we=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(a,c,d,e){var f=c.attr(d.$attr.ngList)||", ",g="false"!==d.ngTrim,h=g?N(f):f;e.$parsers.push(function(a){if(!x(a)){var c=[];a&&r(a.split(h),function(a){a&&c.push(g?N(a):a)});return c}});e.$formatters.push(function(a){return H(a)? +a.join(f):t});e.$isEmpty=function(a){return!a||!a.length}}}},lb="ng-valid",vd="ng-invalid",Ra="ng-pristine",Lb="ng-dirty",xd="ng-pending",Nb=new R("ngModel"),eg=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(a,c,d,e,f,g,h,l,k,n){this.$modelValue=this.$viewValue=Number.NaN;this.$$rawModelValue=t;this.$validators={};this.$asyncValidators={};this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$untouched=!0; +this.$touched=!1;this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid=!1;this.$error={};this.$$success={};this.$pending=t;this.$name=n(d.name||"",!1)(a);var p=f(d.ngModel),q=p.assign,u=p,s=q,M=null,v,m=this;this.$$setOptions=function(a){if((m.$options=a)&&a.getterSetter){var c=f(d.ngModel+"()"),g=f(d.ngModel+"($$$p)");u=function(a){var d=p(a);G(d)&&(d=c(a));return d};s=function(a,c){G(p(a))?g(a,{$$$p:m.$modelValue}):q(a,m.$modelValue)}}else if(!p.assign)throw Nb("nonassign",d.ngModel,wa(e)); +};this.$render=E;this.$isEmpty=function(a){return x(a)||""===a||null===a||a!==a};var F=e.inheritedData("$formController")||Kb,w=0;sd({ctrl:this,$element:e,set:function(a,c){a[c]=!0},unset:function(a,c){delete a[c]},parentForm:F,$animate:g});this.$setPristine=function(){m.$dirty=!1;m.$pristine=!0;g.removeClass(e,Lb);g.addClass(e,Ra)};this.$setDirty=function(){m.$dirty=!0;m.$pristine=!1;g.removeClass(e,Ra);g.addClass(e,Lb);F.$setDirty()};this.$setUntouched=function(){m.$touched=!1;m.$untouched=!0;g.setClass(e, +"ng-untouched","ng-touched")};this.$setTouched=function(){m.$touched=!0;m.$untouched=!1;g.setClass(e,"ng-touched","ng-untouched")};this.$rollbackViewValue=function(){h.cancel(M);m.$viewValue=m.$$lastCommittedViewValue;m.$render()};this.$validate=function(){if(!Y(m.$modelValue)||!isNaN(m.$modelValue)){var a=m.$$rawModelValue,c=m.$valid,d=m.$modelValue,e=m.$options&&m.$options.allowInvalid;m.$$runValidators(a,m.$$lastCommittedViewValue,function(f){e||c===f||(m.$modelValue=f?a:t,m.$modelValue!==d&&m.$$writeModelToScope())})}}; +this.$$runValidators=function(a,c,d){function e(){var d=!0;r(m.$validators,function(e,f){var h=e(a,c);d=d&&h;g(f,h)});return d?!0:(r(m.$asyncValidators,function(a,c){g(c,null)}),!1)}function f(){var d=[],e=!0;r(m.$asyncValidators,function(f,h){var k=f(a,c);if(!k||!G(k.then))throw Nb("$asyncValidators",k);g(h,t);d.push(k.then(function(){g(h,!0)},function(a){e=!1;g(h,!1)}))});d.length?k.all(d).then(function(){h(e)},E):h(!0)}function g(a,c){l===w&&m.$setValidity(a,c)}function h(a){l===w&&d(a)}w++;var l= +w;(function(){var a=m.$$parserName||"parse";if(v===t)g(a,null);else return v||(r(m.$validators,function(a,c){g(c,null)}),r(m.$asyncValidators,function(a,c){g(c,null)})),g(a,v),v;return!0})()?e()?f():h(!1):h(!1)};this.$commitViewValue=function(){var a=m.$viewValue;h.cancel(M);if(m.$$lastCommittedViewValue!==a||""===a&&m.$$hasNativeValidators)m.$$lastCommittedViewValue=a,m.$pristine&&this.$setDirty(),this.$$parseAndValidate()};this.$$parseAndValidate=function(){var c=m.$$lastCommittedViewValue;if(v= +x(c)?t:!0)for(var d=0;dz;)d=t.pop(),n(O,d.label,!1),d.element.remove()}for(;R.length> +x;){l=R.pop();for(z=1;za&&q.removeOption(c)})}var v;if(!(v=s.match(d)))throw gg("iexp",s,wa(f));var C=c(v[2]||v[1]),x=v[4]||v[6],A=/ as /.test(v[0])&&v[1],B=A?c(A):null,G=v[5],J=c(v[3]||""),z=c(v[2]?v[1]:x),L=c(v[7]),I=v[8]?c(v[8]):null,Q={},R=[[{element:f,label:""}]],T={};w&&(a(w)(e),w.removeClass("ng-scope"),w.remove());f.empty();f.on("change",function(){e.$apply(function(){var a=L(e)||[],c;if(u)c=[],r(f.val(), +function(d){d=I?Q[d]:d;c.push("?"===d?t:""===d?null:h(B?B:z,d,a[d]))});else{var d=I?Q[f.val()]:f.val();c="?"===d?t:""===d?null:h(B?B:z,d,a[d])}g.$setViewValue(c);p()})});g.$render=p;e.$watchCollection(L,l);e.$watchCollection(function(){var a=L(e),c;if(a&&H(a)){c=Array(a.length);for(var d=0,f=a.length;df||e.$isEmpty(c)||c.length<=f}}}}},Cc=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){if(e){var f=0;d.$observe("minlength",function(a){f=aa(a)||0;e.$validate()});e.$validators.minlength=function(a,c){return e.$isEmpty(c)||c.length>=f}}}}};Q.angular.bootstrap?console.log("WARNING: Tried to load angular more than once."):(Nd(),Pd(ca),A(W).ready(function(){Jd(W,uc)}))})(window,document);!window.angular.$$csp()&&window.angular.element(document).find("head").prepend(''); //# sourceMappingURL=angular.min.js.map diff --git a/data-mgmt/src/main/webapp/bower_components/angular/angular.min.js.gzip b/data-mgmt/src/main/webapp/bower_components/angular/angular.min.js.gzip index 871e8050564fc959db6ac58da02c80a6bfbb0ed1..ffd226d592d6ab10c6768febdc2d7e426481f2b1 100644 GIT binary patch literal 50407 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∇JyO|X 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⪻VTQv|Qi+F7_ZE~52B z6uXc*KBNoSjZuy(V?Bv@6bS9DiMfj~UA=N=uAz<6WSce9&J&IkUhv4NVR+BP3BF~c zHYIDfi=Y`tF#Sw68~px~w82xqT`7PKt*=4?9Y2_ge{gIxds{fIaJ}O4p5u0vj#RIu z0pa1HCjk^|pCzVasRZ#ob=xgVl4}h0TP&Z$th7PARn!a3V{Kr% z=q$W}65ONM_@n zZs*NmIJDgDa&MhJIvjECg9Q17yFoa94fbq6YI$DzT8MMe^S${j082o$zgY~Hii4aQ zd)h&~fD$lP6A|6n|LIa07Y&HEhwA|qlS9A8H+`rL2iC#(ASM*TD!H zu>s>JaLIp{#e>d7($?d+Pg$Y{gyeVvf8MhgJI8v4;wuqnAoKP7MJ{HdIy$sC-BgY_tC4=>a4ITq#uppYlRuAEg(yAx zW)V=Ju(vplX@VUCqWJqS;=~s?wMBkw>6sH^l z9x02w=u*RhUr_O+9Oy+EglVwL(AL5+j8yAzrV;_bMy&PY)>2=eDdr8JpKT8;e7b+H zz8Xr*Al3OVSR2u*a*8~*s+^B=mJ%f`*@&7R?1L@)fUap7g4N>C zZEyOc#d5`!>{_d&vQjK66mVWwYAB@*mIkf-+CK?e>0}NKDR{injXB$cgPK;CI4uk- zG5A#YQ%?Y6E<}h5?ta4k3iCga^g&zK&Ukre)=Y9gZoquT%yJ2irUXKx(vBULb}a4A zA#rI~kq5?IGY?~?&A zymoyuR26Y}c;AHY;a6%j7|{JL9ne&!%wFA6OuX5oVu<@hV#`BBRbf2{d8^QHhn+z; zAewu(gKiltvFxL}0Vmy~<+HMzZl|DTcIzn6~Q3+JTF%>T~OgG z>s6ZST83m0hq zAWkHvGwcdkSe*GRM;Z_e8w5noG`>lpms`qaaH2DIrN*kdU_@G(090NcjQH)bm;gf{y544qDZzfXkGQd?kZxyYV```B1v3RC{jAW zGKcYRo+=jUv>$iMds#X&sqD$UtheoMyW$;$82anw@?q!KOTYW@(ud1)dJe#i434Mb zpdTNLW04G$JM`aR9e&Yl2bZVxdT=cMMHTt})}DL!PCRe=ia@bWmI zS_a}J3uzo`Jvx9N)?@}BBCFgb4H_22uvLiuDR2Ki^K%@A(cwukyAjc?LbHiC1QC@ok38E*c+QrNdC3mHfs-lf2@Qn)yfx5q(0 zC}BOiY%&mKAeu`Ih_7^LS8AzKzLiP_9EusvM2uphm=J`e!zaA{%nSH#l~!OUfCwSJ z@+U^>4V@tc8v~wyttbr$D7V;2ttZZI+{g(R)^2=Q7%B^-+8Lj8yHill;s}RT z&%8S1O{t{oAz1m`Qx|f94y%?dx%O3F+&Fx}c_Ix-km5Lfb7|m`8#gtTxK_2hH8uh< zvFW7}^^2J+)aoA|_Mw)a7eXWyBGt#4`#LZ#+lr0=O%QFXfa#)gM3-^Qg?>Cud~AC< zX5b)c9g{#hZ;!CCSDptU^KL!Jys9jTOZ{jHL)wA8a

    WCa3ME5h5owgaPDI}#r1|51)NJMfojkf(yRqZ8 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 literal 45769 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 diff --git a/data-mgmt/src/main/webapp/bower_components/angular/angular.min.js.map b/data-mgmt/src/main/webapp/bower_components/angular/angular.min.js.map index 1364ea9..b054603 100644 --- a/data-mgmt/src/main/webapp/bower_components/angular/angular.min.js.map +++ b/data-mgmt/src/main/webapp/bower_components/angular/angular.min.js.map @@ -1,8 +1,8 @@ { "version":3, "file":"angular.min.js", -"lineCount":249, -"mappings":"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", +"lineCount":250, +"mappings":"A;;;;;aAKC,SAAQ,CAACA,CAAD,CAASC,CAAT,CAAmBC,CAAnB,CAA8B,CAgCvCC,QAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,SAAAA,EAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAAA,CAAAA,EAAAA,EAAAA,CAAAA,CAAAA,uCAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAAA,CAAAA,EAAAA,EAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,SAAAA,OAAAA,CAAAA,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,CAAAA,GAAAA,CAAAA,GAAAA,EAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA,EAAAA,GAAAA,KAAAA,EAAAA,kBAAAA,CAAAA,CAAAA,EAAAA,CAAAA,SAAAA,CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,UAAAA,EAAAA,MAAAA,EAAAA,CAAAA,CAAAA,SAAAA,EAAAA,QAAAA,CAAAA,aAAAA,CAAAA,EAAAA,CAAAA,CAAAA,WAAAA,EAAAA,MAAAA,EAAAA,CAAAA,WAAAA,CAAAA,QAAAA,EAAAA,MAAAA,EAAAA,CAAAA,IAAAA,UAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,MAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CA4NAC,QAASA,GAAW,CAACC,CAAD,CAAM,CACxB,GAAW,IAAX,EAAIA,CAAJ,EAAmBC,EAAA,CAASD,CAAT,CAAnB,CACE,MAAO,CAAA,CAGT,KAAIE,EAASF,CAAAE,OAEb,OAAIF,EAAAG,SAAJ;AAAqBC,EAArB,EAA0CF,CAA1C,CACS,CAAA,CADT,CAIOG,CAAA,CAASL,CAAT,CAJP,EAIwBM,CAAA,CAAQN,CAAR,CAJxB,EAImD,CAJnD,GAIwCE,CAJxC,EAKyB,QALzB,GAKO,MAAOA,EALd,EAK8C,CAL9C,CAKqCA,CALrC,EAKoDA,CALpD,CAK6D,CAL7D,GAKmEF,EAZ3C,CAkD1BO,QAASA,EAAO,CAACP,CAAD,CAAMQ,CAAN,CAAgBC,CAAhB,CAAyB,CAAA,IACnCC,CADmC,CAC9BR,CACT,IAAIF,CAAJ,CACE,GAAIW,CAAA,CAAWX,CAAX,CAAJ,CACE,IAAKU,CAAL,GAAYV,EAAZ,CAGa,WAAX,EAAIU,CAAJ,EAAiC,QAAjC,EAA0BA,CAA1B,EAAoD,MAApD,EAA6CA,CAA7C,EAAgEV,CAAAY,eAAhE,EAAsF,CAAAZ,CAAAY,eAAA,CAAmBF,CAAnB,CAAtF,EACEF,CAAAK,KAAA,CAAcJ,CAAd,CAAuBT,CAAA,CAAIU,CAAJ,CAAvB,CAAiCA,CAAjC,CAAsCV,CAAtC,CALN,KAQO,IAAIM,CAAA,CAAQN,CAAR,CAAJ,EAAoBD,EAAA,CAAYC,CAAZ,CAApB,CAAsC,CAC3C,IAAIc,EAA6B,QAA7BA,GAAc,MAAOd,EACpBU,EAAA,CAAM,CAAX,KAAcR,CAAd,CAAuBF,CAAAE,OAAvB,CAAmCQ,CAAnC,CAAyCR,CAAzC,CAAiDQ,CAAA,EAAjD,CACE,CAAII,CAAJ,EAAmBJ,CAAnB,GAA0BV,EAA1B,GACEQ,CAAAK,KAAA,CAAcJ,CAAd,CAAuBT,CAAA,CAAIU,CAAJ,CAAvB,CAAiCA,CAAjC,CAAsCV,CAAtC,CAJuC,CAAtC,IAOA,IAAIA,CAAAO,QAAJ,EAAmBP,CAAAO,QAAnB,GAAmCA,CAAnC,CACHP,CAAAO,QAAA,CAAYC,CAAZ,CAAsBC,CAAtB,CAA+BT,CAA/B,CADG,KAGL,KAAKU,CAAL,GAAYV,EAAZ,CACMA,CAAAY,eAAA,CAAmBF,CAAnB,CAAJ,EACEF,CAAAK,KAAA,CAAcJ,CAAd,CAAuBT,CAAA,CAAIU,CAAJ,CAAvB,CAAiCA,CAAjC,CAAsCV,CAAtC,CAKR,OAAOA,EA5BgC,CAmCzCe,QAASA,GAAa,CAACf,CAAD,CAAMQ,CAAN,CAAgBC,CAAhB,CAAyB,CAE7C,IADA,IAAIO,EAJGC,MAAAD,KAAA,CAIehB,CAJf,CAAAkB,KAAA,EAIP,CACSC,EAAI,CAAb,CAAgBA,CAAhB,CAAoBH,CAAAd,OAApB,CAAiCiB,CAAA,EAAjC,CACEX,CAAAK,KAAA,CAAcJ,CAAd;AAAuBT,CAAA,CAAIgB,CAAA,CAAKG,CAAL,CAAJ,CAAvB,CAAqCH,CAAA,CAAKG,CAAL,CAArC,CAEF,OAAOH,EALsC,CAc/CI,QAASA,GAAa,CAACC,CAAD,CAAa,CACjC,MAAO,SAAQ,CAACC,CAAD,CAAQZ,CAAR,CAAa,CAAEW,CAAA,CAAWX,CAAX,CAAgBY,CAAhB,CAAF,CADK,CAcnCC,QAASA,GAAO,EAAG,CACjB,MAAO,EAAEC,EADQ,CAUnBC,QAASA,GAAU,CAACzB,CAAD,CAAM0B,CAAN,CAAS,CACtBA,CAAJ,CACE1B,CAAA2B,UADF,CACkBD,CADlB,CAGE,OAAO1B,CAAA2B,UAJiB,CAwB5BC,QAASA,EAAM,CAACC,CAAD,CAAM,CAGnB,IAFA,IAAIH,EAAIG,CAAAF,UAAR,CAESR,EAAI,CAFb,CAEgBW,EAAKC,SAAA7B,OAArB,CAAuCiB,CAAvC,CAA2CW,CAA3C,CAA+CX,CAAA,EAA/C,CAAoD,CAClD,IAAInB,EAAM+B,SAAA,CAAUZ,CAAV,CACV,IAAInB,CAAJ,CAEE,IADA,IAAIgB,EAAOC,MAAAD,KAAA,CAAYhB,CAAZ,CAAX,CACSgC,EAAI,CADb,CACgBC,EAAKjB,CAAAd,OAArB,CAAkC8B,CAAlC,CAAsCC,CAAtC,CAA0CD,CAAA,EAA1C,CAA+C,CAC7C,IAAItB,EAAMM,CAAA,CAAKgB,CAAL,CACVH,EAAA,CAAInB,CAAJ,CAAA,CAAWV,CAAA,CAAIU,CAAJ,CAFkC,CAJC,CAWpDe,EAAA,CAAWI,CAAX,CAAgBH,CAAhB,CACA,OAAOG,EAfY,CAkBrBK,QAASA,GAAG,CAACC,CAAD,CAAM,CAChB,MAAOC,SAAA,CAASD,CAAT,CAAc,EAAd,CADS,CAKlBE,QAASA,GAAO,CAACC,CAAD,CAASC,CAAT,CAAgB,CAC9B,MAAOX,EAAA,CAAOX,MAAAuB,OAAA,CAAcF,CAAd,CAAP,CAA8BC,CAA9B,CADuB,CAoBhCE,QAASA,EAAI,EAAG,EAsBhBC,QAASA,GAAQ,CAACC,CAAD,CAAI,CAAC,MAAOA,EAAR,CAIrBC,QAASA,GAAO,CAACtB,CAAD,CAAQ,CAAC,MAAO,SAAQ,EAAG,CAAC,MAAOA,EAAR,CAAnB,CAcxBuB,QAASA,EAAW,CAACvB,CAAD,CAAQ,CAAC,MAAwB,WAAxB;AAAO,MAAOA,EAAf,CAe5BwB,QAASA,EAAS,CAACxB,CAAD,CAAQ,CAAC,MAAwB,WAAxB,GAAO,MAAOA,EAAf,CAgB1ByB,QAASA,EAAQ,CAACzB,CAAD,CAAQ,CAEvB,MAAiB,KAAjB,GAAOA,CAAP,EAA0C,QAA1C,GAAyB,MAAOA,EAFT,CAkBzBjB,QAASA,EAAQ,CAACiB,CAAD,CAAQ,CAAC,MAAwB,QAAxB,GAAO,MAAOA,EAAf,CAqBzB0B,QAASA,EAAQ,CAAC1B,CAAD,CAAQ,CAAC,MAAwB,QAAxB,GAAO,MAAOA,EAAf,CAezB2B,QAASA,GAAM,CAAC3B,CAAD,CAAQ,CACrB,MAAgC,eAAhC,GAAO4B,EAAArC,KAAA,CAAcS,CAAd,CADc,CA+BvBX,QAASA,EAAU,CAACW,CAAD,CAAQ,CAAC,MAAwB,UAAxB,GAAO,MAAOA,EAAf,CAU3B6B,QAASA,GAAQ,CAAC7B,CAAD,CAAQ,CACvB,MAAgC,iBAAhC,GAAO4B,EAAArC,KAAA,CAAcS,CAAd,CADgB,CAYzBrB,QAASA,GAAQ,CAACD,CAAD,CAAM,CACrB,MAAOA,EAAP,EAAcA,CAAAL,OAAd,GAA6BK,CADR,CAKvBoD,QAASA,GAAO,CAACpD,CAAD,CAAM,CACpB,MAAOA,EAAP,EAAcA,CAAAqD,WAAd,EAAgCrD,CAAAsD,OADZ,CAoBtBC,QAASA,GAAS,CAACjC,CAAD,CAAQ,CACxB,MAAwB,SAAxB,GAAO,MAAOA,EADU,CAmC1BkC,QAASA,GAAS,CAACC,CAAD,CAAO,CACvB,MAAO,EAAGA,CAAAA,CAAH,EACJ,EAAAA,CAAAC,SAAA,EACGD,CAAAE,KADH;AACgBF,CAAAG,KADhB,EAC6BH,CAAAI,KAD7B,CADI,CADgB,CAUzBC,QAASA,GAAO,CAAC3B,CAAD,CAAM,CAAA,IAChBnC,EAAM,EAAI+D,EAAAA,CAAQ5B,CAAA6B,MAAA,CAAU,GAAV,CAAtB,KAAsC7C,CACtC,KAAKA,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgB4C,CAAA7D,OAAhB,CAA8BiB,CAAA,EAA9B,CACEnB,CAAA,CAAI+D,CAAA,CAAM5C,CAAN,CAAJ,CAAA,CAAgB,CAAA,CAClB,OAAOnB,EAJa,CAQtBiE,QAASA,GAAS,CAACC,CAAD,CAAU,CAC1B,MAAOC,EAAA,CAAUD,CAAAR,SAAV,EAA+BQ,CAAA,CAAQ,CAAR,CAA/B,EAA6CA,CAAA,CAAQ,CAAR,CAAAR,SAA7C,CADmB,CAQ5BU,QAASA,GAAW,CAACC,CAAD,CAAQ/C,CAAR,CAAe,CACjC,IAAIgD,EAAQD,CAAAE,QAAA,CAAcjD,CAAd,CACC,EAAb,EAAIgD,CAAJ,EACED,CAAAG,OAAA,CAAaF,CAAb,CAAoB,CAApB,CACF,OAAOhD,EAJ0B,CAiEnCmD,QAASA,GAAI,CAACC,CAAD,CAASC,CAAT,CAAsBC,CAAtB,CAAmCC,CAAnC,CAA8C,CACzD,GAAI5E,EAAA,CAASyE,CAAT,CAAJ,EAAwBtB,EAAA,CAAQsB,CAAR,CAAxB,CACE,KAAMI,GAAA,CAAS,MAAT,CAAN,CAIF,GAAKH,CAAL,CAeO,CACL,GAAID,CAAJ,GAAeC,CAAf,CAA4B,KAAMG,GAAA,CAAS,KAAT,CAAN,CAG5BF,CAAA,CAAcA,CAAd,EAA6B,EAC7BC,EAAA,CAAYA,CAAZ,EAAyB,EAEzB,IAAI9B,CAAA,CAAS2B,CAAT,CAAJ,CAAsB,CACpB,IAAIJ,EAAQM,CAAAL,QAAA,CAAoBG,CAApB,CACZ,IAAe,EAAf,GAAIJ,CAAJ,CAAkB,MAAOO,EAAA,CAAUP,CAAV,CAEzBM,EAAAG,KAAA,CAAiBL,CAAjB,CACAG,EAAAE,KAAA,CAAeJ,CAAf,CALoB,CAStB,GAAIrE,CAAA,CAAQoE,CAAR,CAAJ,CAEE,IAAS,IAAAvD,EADTwD,CAAAzE,OACSiB,CADY,CACrB,CAAgBA,CAAhB,CAAoBuD,CAAAxE,OAApB,CAAmCiB,CAAA,EAAnC,CACE6D,CAKA,CALSP,EAAA,CAAKC,CAAA,CAAOvD,CAAP,CAAL,CAAgB,IAAhB,CAAsByD,CAAtB,CAAmCC,CAAnC,CAKT,CAJI9B,CAAA,CAAS2B,CAAA,CAAOvD,CAAP,CAAT,CAIJ,GAHEyD,CAAAG,KAAA,CAAiBL,CAAA,CAAOvD,CAAP,CAAjB,CACA,CAAA0D,CAAAE,KAAA,CAAeC,CAAf,CAEF,EAAAL,CAAAI,KAAA,CAAiBC,CAAjB,CARJ;IAUO,CACL,IAAItD,EAAIiD,CAAAhD,UACJrB,EAAA,CAAQqE,CAAR,CAAJ,CACEA,CAAAzE,OADF,CACuB,CADvB,CAGEK,CAAA,CAAQoE,CAAR,CAAqB,QAAQ,CAACrD,CAAD,CAAQZ,CAAR,CAAa,CACxC,OAAOiE,CAAA,CAAYjE,CAAZ,CADiC,CAA1C,CAIF,KAASA,CAAT,GAAgBgE,EAAhB,CACMA,CAAA9D,eAAA,CAAsBF,CAAtB,CAAJ,GACEsE,CAKA,CALSP,EAAA,CAAKC,CAAA,CAAOhE,CAAP,CAAL,CAAkB,IAAlB,CAAwBkE,CAAxB,CAAqCC,CAArC,CAKT,CAJI9B,CAAA,CAAS2B,CAAA,CAAOhE,CAAP,CAAT,CAIJ,GAHEkE,CAAAG,KAAA,CAAiBL,CAAA,CAAOhE,CAAP,CAAjB,CACA,CAAAmE,CAAAE,KAAA,CAAeC,CAAf,CAEF,EAAAL,CAAA,CAAYjE,CAAZ,CAAA,CAAmBsE,CANrB,CASFvD,GAAA,CAAWkD,CAAX,CAAuBjD,CAAvB,CAnBK,CA1BF,CAfP,IAEE,IADAiD,CACA,CADcD,CACd,CACMpE,CAAA,CAAQoE,CAAR,CAAJ,CACEC,CADF,CACgBF,EAAA,CAAKC,CAAL,CAAa,EAAb,CAAiBE,CAAjB,CAA8BC,CAA9B,CADhB,CAEW5B,EAAA,CAAOyB,CAAP,CAAJ,CACLC,CADK,CACS,IAAIM,IAAJ,CAASP,CAAAQ,QAAA,EAAT,CADT,CAEI/B,EAAA,CAASuB,CAAT,CAAJ,EACLC,CACA,CADc,IAAIQ,MAAJ,CAAWT,CAAAA,OAAX,CAA0BA,CAAAxB,SAAA,EAAAkC,MAAA,CAAwB,SAAxB,CAAA,CAAmC,CAAnC,CAA1B,CACd,CAAAT,CAAAU,UAAA,CAAwBX,CAAAW,UAFnB,EAGItC,CAAA,CAAS2B,CAAT,CAHJ,GAIDY,CACJ,CADkBrE,MAAAuB,OAAA,CAAcvB,MAAAsE,eAAA,CAAsBb,CAAtB,CAAd,CAClB,CAAAC,CAAA,CAAcF,EAAA,CAAKC,CAAL,CAAaY,CAAb,CAA0BV,CAA1B,CAAuCC,CAAvC,CALT,CAyDX,OAAOF,EAtEkD,CA8E3Da,QAASA,GAAW,CAACC,CAAD,CAAM5D,CAAN,CAAW,CAC7B,GAAIvB,CAAA,CAAQmF,CAAR,CAAJ,CAAkB,CAChB5D,CAAA,CAAMA,CAAN,EAAa,EAEb,KAHgB,IAGPV,EAAI,CAHG,CAGAW,EAAK2D,CAAAvF,OAArB,CAAiCiB,CAAjC,CAAqCW,CAArC,CAAyCX,CAAA,EAAzC,CACEU,CAAA,CAAIV,CAAJ,CAAA,CAASsE,CAAA,CAAItE,CAAJ,CAJK,CAAlB,IAMO,IAAI4B,CAAA,CAAS0C,CAAT,CAAJ,CAGL,IAAS/E,CAAT,GAFAmB,EAEgB4D,CAFV5D,CAEU4D,EAFH,EAEGA;AAAAA,CAAhB,CACE,GAAwB,GAAxB,GAAM/E,CAAAgF,OAAA,CAAW,CAAX,CAAN,EAAiD,GAAjD,GAA+BhF,CAAAgF,OAAA,CAAW,CAAX,CAA/B,CACE7D,CAAA,CAAInB,CAAJ,CAAA,CAAW+E,CAAA,CAAI/E,CAAJ,CAKjB,OAAOmB,EAAP,EAAc4D,CAjBe,CAkD/BE,QAASA,GAAM,CAACC,CAAD,CAAKC,CAAL,CAAS,CACtB,GAAID,CAAJ,GAAWC,CAAX,CAAe,MAAO,CAAA,CACtB,IAAW,IAAX,GAAID,CAAJ,EAA0B,IAA1B,GAAmBC,CAAnB,CAAgC,MAAO,CAAA,CACvC,IAAID,CAAJ,GAAWA,CAAX,EAAiBC,CAAjB,GAAwBA,CAAxB,CAA4B,MAAO,CAAA,CAHb,KAIlBC,EAAK,MAAOF,EAJM,CAIsBlF,CAC5C,IAAIoF,CAAJ,EADyBC,MAAOF,EAChC,EACY,QADZ,EACMC,CADN,CAEI,GAAIxF,CAAA,CAAQsF,CAAR,CAAJ,CAAiB,CACf,GAAK,CAAAtF,CAAA,CAAQuF,CAAR,CAAL,CAAkB,MAAO,CAAA,CACzB,KAAK3F,CAAL,CAAc0F,CAAA1F,OAAd,GAA4B2F,CAAA3F,OAA5B,CAAuC,CACrC,IAAKQ,CAAL,CAAW,CAAX,CAAcA,CAAd,CAAoBR,CAApB,CAA4BQ,CAAA,EAA5B,CACE,GAAK,CAAAiF,EAAA,CAAOC,CAAA,CAAGlF,CAAH,CAAP,CAAgBmF,CAAA,CAAGnF,CAAH,CAAhB,CAAL,CAA+B,MAAO,CAAA,CAExC,OAAO,CAAA,CAJ8B,CAFxB,CAAjB,IAQO,CAAA,GAAIuC,EAAA,CAAO2C,CAAP,CAAJ,CACL,MAAK3C,GAAA,CAAO4C,CAAP,CAAL,CACOF,EAAA,CAAOC,CAAAV,QAAA,EAAP,CAAqBW,CAAAX,QAAA,EAArB,CADP,CAAwB,CAAA,CAEnB,IAAI/B,EAAA,CAASyC,CAAT,CAAJ,CACL,MAAOzC,GAAA,CAAS0C,CAAT,CAAA,CAAeD,CAAA1C,SAAA,EAAf,EAAgC2C,CAAA3C,SAAA,EAAhC,CAAgD,CAAA,CAEvD,IAAIE,EAAA,CAAQwC,CAAR,CAAJ,EAAmBxC,EAAA,CAAQyC,CAAR,CAAnB,EAAkC5F,EAAA,CAAS2F,CAAT,CAAlC,EAAkD3F,EAAA,CAAS4F,CAAT,CAAlD,EACEvF,CAAA,CAAQuF,CAAR,CADF,EACiB5C,EAAA,CAAO4C,CAAP,CADjB,EAC+B1C,EAAA,CAAS0C,CAAT,CAD/B,CAC6C,MAAO,CAAA,CACpDG,EAAA,CAAS,EACT,KAAKtF,CAAL,GAAYkF,EAAZ,CACE,GAAsB,GAAtB;AAAIlF,CAAAgF,OAAA,CAAW,CAAX,CAAJ,EAA6B,CAAA/E,CAAA,CAAWiF,CAAA,CAAGlF,CAAH,CAAX,CAA7B,CAAA,CACA,GAAK,CAAAiF,EAAA,CAAOC,CAAA,CAAGlF,CAAH,CAAP,CAAgBmF,CAAA,CAAGnF,CAAH,CAAhB,CAAL,CAA+B,MAAO,CAAA,CACtCsF,EAAA,CAAOtF,CAAP,CAAA,CAAc,CAAA,CAFd,CAIF,IAAKA,CAAL,GAAYmF,EAAZ,CACE,GAAK,CAAAG,CAAApF,eAAA,CAAsBF,CAAtB,CAAL,EACsB,GADtB,GACIA,CAAAgF,OAAA,CAAW,CAAX,CADJ,EAEIG,CAAA,CAAGnF,CAAH,CAFJ,GAEgBb,CAFhB,EAGK,CAAAc,CAAA,CAAWkF,CAAA,CAAGnF,CAAH,CAAX,CAHL,CAG0B,MAAO,CAAA,CAEnC,OAAO,CAAA,CApBF,CAwBX,MAAO,CAAA,CAvCe,CA+DxBuF,QAASA,GAAM,CAACC,CAAD,CAASC,CAAT,CAAiB7B,CAAjB,CAAwB,CACrC,MAAO4B,EAAAD,OAAA,CAAcG,EAAAvF,KAAA,CAAWsF,CAAX,CAAmB7B,CAAnB,CAAd,CAD8B,CA4BvC+B,QAASA,GAAI,CAACC,CAAD,CAAOC,CAAP,CAAW,CACtB,IAAIC,EAA+B,CAAnB,CAAAzE,SAAA7B,OAAA,CAxBTkG,EAAAvF,KAAA,CAwB0CkB,SAxB1C,CAwBqD0E,CAxBrD,CAwBS,CAAiD,EACjE,OAAI,CAAA9F,CAAA,CAAW4F,CAAX,CAAJ,EAAwBA,CAAxB,WAAsCpB,OAAtC,CAcSoB,CAdT,CACSC,CAAAtG,OAAA,CACH,QAAQ,EAAG,CACT,MAAO6B,UAAA7B,OAAA,CACHqG,CAAAG,MAAA,CAASJ,CAAT,CAAeL,EAAA,CAAOO,CAAP,CAAkBzE,SAAlB,CAA6B,CAA7B,CAAf,CADG,CAEHwE,CAAAG,MAAA,CAASJ,CAAT,CAAeE,CAAf,CAHK,CADR,CAMH,QAAQ,EAAG,CACT,MAAOzE,UAAA7B,OAAA,CACHqG,CAAAG,MAAA,CAASJ,CAAT,CAAevE,SAAf,CADG,CAEHwE,CAAA1F,KAAA,CAAQyF,CAAR,CAHK,CATK,CAqBxBK,QAASA,GAAc,CAACjG,CAAD,CAAMY,CAAN,CAAa,CAClC,IAAIsF,EAAMtF,CAES,SAAnB,GAAI,MAAOZ,EAAX;AAAiD,GAAjD,GAA+BA,CAAAgF,OAAA,CAAW,CAAX,CAA/B,EAA0E,GAA1E,GAAwDhF,CAAAgF,OAAA,CAAW,CAAX,CAAxD,CACEkB,CADF,CACQ/G,CADR,CAEWI,EAAA,CAASqB,CAAT,CAAJ,CACLsF,CADK,CACC,SADD,CAEItF,CAAJ,EAAc1B,CAAd,GAA2B0B,CAA3B,CACLsF,CADK,CACC,WADD,CAEIxD,EAAA,CAAQ9B,CAAR,CAFJ,GAGLsF,CAHK,CAGC,QAHD,CAMP,OAAOA,EAb2B,CAgCpCC,QAASA,GAAM,CAAC7G,CAAD,CAAM8G,CAAN,CAAc,CAC3B,GAAmB,WAAnB,GAAI,MAAO9G,EAAX,CAAgC,MAAOH,EAClCmD,EAAA,CAAS8D,CAAT,CAAL,GACEA,CADF,CACWA,CAAA,CAAS,CAAT,CAAa,IADxB,CAGA,OAAOC,KAAAC,UAAA,CAAehH,CAAf,CAAoB2G,EAApB,CAAoCG,CAApC,CALoB,CAqB7BG,QAASA,GAAQ,CAACC,CAAD,CAAO,CACtB,MAAO7G,EAAA,CAAS6G,CAAT,CAAA,CACDH,IAAAI,MAAA,CAAWD,CAAX,CADC,CAEDA,CAHgB,CAUxBE,QAASA,GAAW,CAAClD,CAAD,CAAU,CAC5BA,CAAA,CAAUmD,CAAA,CAAOnD,CAAP,CAAAoD,MAAA,EACV,IAAI,CAGFpD,CAAAqD,MAAA,EAHE,CAIF,MAAOC,CAAP,CAAU,EACZ,IAAIC,EAAWJ,CAAA,CAAO,OAAP,CAAAK,OAAA,CAAuBxD,CAAvB,CAAAyD,KAAA,EACf,IAAI,CACF,MAAOzD,EAAA,CAAQ,CAAR,CAAA/D,SAAA,GAAwByH,EAAxB,CAAyCzD,CAAA,CAAUsD,CAAV,CAAzC,CACHA,CAAArC,MAAA,CACQ,YADR,CAAA,CACsB,CADtB,CAAAyC,QAAA,CAEU,aAFV,CAEyB,QAAQ,CAACzC,CAAD,CAAQ1B,CAAR,CAAkB,CAAE,MAAO,GAAP,CAAaS,CAAA,CAAUT,CAAV,CAAf,CAFnD,CAFF,CAKF,MAAO8D,CAAP,CAAU,CACV,MAAOrD,EAAA,CAAUsD,CAAV,CADG,CAbgB,CA8B9BK,QAASA,GAAqB,CAACxG,CAAD,CAAQ,CACpC,GAAI,CACF,MAAOyG,mBAAA,CAAmBzG,CAAnB,CADL,CAEF,MAAOkG,CAAP,CAAU,EAHwB,CAhlCC;AA6lCvCQ,QAASA,GAAa,CAAYC,CAAZ,CAAsB,CAAA,IACtCjI,EAAM,EADgC,CAC5BkI,CAD4B,CACjBxH,CACzBH,EAAA,CAAQyD,CAACiE,CAADjE,EAAa,EAAbA,OAAA,CAAuB,GAAvB,CAAR,CAAqC,QAAQ,CAACiE,CAAD,CAAW,CAClDA,CAAJ,GACEC,CAEA,CAFYD,CAAAJ,QAAA,CAAiB,KAAjB,CAAuB,KAAvB,CAAA7D,MAAA,CAAoC,GAApC,CAEZ,CADAtD,CACA,CADMoH,EAAA,CAAsBI,CAAA,CAAU,CAAV,CAAtB,CACN,CAAIpF,CAAA,CAAUpC,CAAV,CAAJ,GACMkG,CACJ,CADU9D,CAAA,CAAUoF,CAAA,CAAU,CAAV,CAAV,CAAA,CAA0BJ,EAAA,CAAsBI,CAAA,CAAU,CAAV,CAAtB,CAA1B,CAAgE,CAAA,CAC1E,CAAKtH,EAAAC,KAAA,CAAoBb,CAApB,CAAyBU,CAAzB,CAAL,CAEWJ,CAAA,CAAQN,CAAA,CAAIU,CAAJ,CAAR,CAAJ,CACLV,CAAA,CAAIU,CAAJ,CAAAqE,KAAA,CAAc6B,CAAd,CADK,CAGL5G,CAAA,CAAIU,CAAJ,CAHK,CAGM,CAACV,CAAA,CAAIU,CAAJ,CAAD,CAAUkG,CAAV,CALb,CACE5G,CAAA,CAAIU,CAAJ,CADF,CACakG,CAHf,CAHF,CADsD,CAAxD,CAgBA,OAAO5G,EAlBmC,CAqB5CmI,QAASA,GAAU,CAACnI,CAAD,CAAM,CACvB,IAAIoI,EAAQ,EACZ7H,EAAA,CAAQP,CAAR,CAAa,QAAQ,CAACsB,CAAD,CAAQZ,CAAR,CAAa,CAC5BJ,CAAA,CAAQgB,CAAR,CAAJ,CACEf,CAAA,CAAQe,CAAR,CAAe,QAAQ,CAAC+G,CAAD,CAAa,CAClCD,CAAArD,KAAA,CAAWuD,EAAA,CAAe5H,CAAf,CAAoB,CAAA,CAApB,CAAX,EAC2B,CAAA,CAAf,GAAA2H,CAAA,CAAsB,EAAtB,CAA2B,GAA3B,CAAiCC,EAAA,CAAeD,CAAf,CAA2B,CAAA,CAA3B,CAD7C,EADkC,CAApC,CADF,CAMAD,CAAArD,KAAA,CAAWuD,EAAA,CAAe5H,CAAf,CAAoB,CAAA,CAApB,CAAX,EACsB,CAAA,CAAV,GAAAY,CAAA,CAAiB,EAAjB,CAAsB,GAAtB,CAA4BgH,EAAA,CAAehH,CAAf,CAAsB,CAAA,CAAtB,CADxC,EAPgC,CAAlC,CAWA,OAAO8G,EAAAlI,OAAA,CAAekI,CAAAG,KAAA,CAAW,GAAX,CAAf,CAAiC,EAbjB,CA4BzBC,QAASA,GAAgB,CAAC5B,CAAD,CAAM,CAC7B,MAAO0B,GAAA,CAAe1B,CAAf,CAAoB,CAAA,CAApB,CAAAiB,QAAA,CACY,OADZ,CACqB,GADrB,CAAAA,QAAA,CAEY,OAFZ,CAEqB,GAFrB,CAAAA,QAAA,CAGY,OAHZ,CAGqB,GAHrB,CADsB,CAmB/BS,QAASA,GAAc,CAAC1B,CAAD,CAAM6B,CAAN,CAAuB,CAC5C,MAAOC,mBAAA,CAAmB9B,CAAnB,CAAAiB,QAAA,CACY,OADZ;AACqB,GADrB,CAAAA,QAAA,CAEY,OAFZ,CAEqB,GAFrB,CAAAA,QAAA,CAGY,MAHZ,CAGoB,GAHpB,CAAAA,QAAA,CAIY,OAJZ,CAIqB,GAJrB,CAAAA,QAAA,CAKY,OALZ,CAKqB,GALrB,CAAAA,QAAA,CAMY,MANZ,CAMqBY,CAAA,CAAkB,KAAlB,CAA0B,GAN/C,CADqC,CAY9CE,QAASA,GAAc,CAACzE,CAAD,CAAU0E,CAAV,CAAkB,CAAA,IACnChF,CADmC,CAC7BzC,CAD6B,CAC1BW,EAAK+G,EAAA3I,OAClBgE,EAAA,CAAUmD,CAAA,CAAOnD,CAAP,CACV,KAAK/C,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBW,CAAhB,CAAoB,EAAEX,CAAtB,CAEE,GADAyC,CACI,CADGiF,EAAA,CAAe1H,CAAf,CACH,CADuByH,CACvB,CAAAvI,CAAA,CAASuD,CAAT,CAAgBM,CAAAN,KAAA,CAAaA,CAAb,CAAhB,CAAJ,CACE,MAAOA,EAGX,OAAO,KATgC,CA2IzCkF,QAASA,GAAW,CAAC5E,CAAD,CAAU6E,CAAV,CAAqB,CAAA,IACnCC,CADmC,CAEnCC,CAFmC,CAGnCC,EAAS,EAGb3I,EAAA,CAAQsI,EAAR,CAAwB,QAAQ,CAACM,CAAD,CAAS,CACnCC,CAAAA,EAAgB,KAEfJ,EAAAA,CAAL,EAAmB9E,CAAAmF,aAAnB,EAA2CnF,CAAAmF,aAAA,CAAqBD,CAArB,CAA3C,GACEJ,CACA,CADa9E,CACb,CAAA+E,CAAA,CAAS/E,CAAAoF,aAAA,CAAqBF,CAArB,CAFX,CAHuC,CAAzC,CAQA7I,EAAA,CAAQsI,EAAR,CAAwB,QAAQ,CAACM,CAAD,CAAS,CACnCC,CAAAA,EAAgB,KACpB,KAAIG,CAECP,EAAAA,CAAL,GAAoBO,CAApB,CAAgCrF,CAAAsF,cAAA,CAAsB,GAAtB,CAA4BJ,CAAAvB,QAAA,CAAa,GAAb,CAAkB,KAAlB,CAA5B,CAAuD,GAAvD,CAAhC,IACEmB,CACA,CADaO,CACb,CAAAN,CAAA,CAASM,CAAAD,aAAA,CAAuBF,CAAvB,CAFX,CAJuC,CAAzC,CASIJ,EAAJ,GACEE,CAAAO,SACA,CAD8D,IAC9D,GADkBd,EAAA,CAAeK,CAAf,CAA2B,WAA3B,CAClB;AAAAD,CAAA,CAAUC,CAAV,CAAsBC,CAAA,CAAS,CAACA,CAAD,CAAT,CAAoB,EAA1C,CAA8CC,CAA9C,CAFF,CAvBuC,CA+EzCH,QAASA,GAAS,CAAC7E,CAAD,CAAUwF,CAAV,CAAmBR,CAAnB,CAA2B,CACtCnG,CAAA,CAASmG,CAAT,CAAL,GAAuBA,CAAvB,CAAgC,EAAhC,CAIAA,EAAA,CAAStH,CAAA,CAHW+H,CAClBF,SAAU,CAAA,CADQE,CAGX,CAAsBT,CAAtB,CACT,KAAIU,EAAcA,QAAQ,EAAG,CAC3B1F,CAAA,CAAUmD,CAAA,CAAOnD,CAAP,CAEV,IAAIA,CAAA2F,SAAA,EAAJ,CAAwB,CACtB,IAAIC,EAAO5F,CAAA,CAAQ,CAAR,CAAD,GAAgBtE,CAAhB,CAA4B,UAA5B,CAAyCwH,EAAA,CAAYlD,CAAZ,CAEnD,MAAMY,GAAA,CACF,SADE,CAGFgF,CAAAjC,QAAA,CAAY,GAAZ,CAAgB,MAAhB,CAAAA,QAAA,CAAgC,GAAhC,CAAoC,MAApC,CAHE,CAAN,CAHsB,CASxB6B,CAAA,CAAUA,CAAV,EAAqB,EACrBA,EAAAK,QAAA,CAAgB,CAAC,UAAD,CAAa,QAAQ,CAACC,CAAD,CAAW,CAC9CA,CAAA1I,MAAA,CAAe,cAAf,CAA+B4C,CAA/B,CAD8C,CAAhC,CAAhB,CAIIgF,EAAAe,iBAAJ,EAEEP,CAAA3E,KAAA,CAAa,CAAC,kBAAD,CAAqB,QAAQ,CAACmF,CAAD,CAAmB,CAC3DA,CAAAD,iBAAA,CAAkC,CAAA,CAAlC,CAD2D,CAAhD,CAAb,CAKFP,EAAAK,QAAA,CAAgB,IAAhB,CACIF,EAAAA,CAAWM,EAAA,CAAeT,CAAf,CAAwBR,CAAAO,SAAxB,CACfI,EAAAO,OAAA,CAAgB,CAAC,YAAD,CAAe,cAAf,CAA+B,UAA/B,CAA2C,WAA3C,CACbC,QAAuB,CAACC,CAAD,CAAQpG,CAAR,CAAiBqG,CAAjB,CAA0BV,CAA1B,CAAoC,CAC1DS,CAAAE,OAAA,CAAa,QAAQ,EAAG,CACtBtG,CAAAuG,KAAA,CAAa,WAAb;AAA0BZ,CAA1B,CACAU,EAAA,CAAQrG,CAAR,CAAA,CAAiBoG,CAAjB,CAFsB,CAAxB,CAD0D,CAD9C,CAAhB,CAQA,OAAOT,EAlCoB,CAA7B,CAqCIa,EAAuB,wBArC3B,CAsCIC,EAAqB,sBAErBhL,EAAJ,EAAc+K,CAAAE,KAAA,CAA0BjL,CAAAyJ,KAA1B,CAAd,GACEF,CAAAe,iBACA,CAD0B,CAAA,CAC1B,CAAAtK,CAAAyJ,KAAA,CAAczJ,CAAAyJ,KAAAvB,QAAA,CAAoB6C,CAApB,CAA0C,EAA1C,CAFhB,CAKA,IAAI/K,CAAJ,EAAe,CAAAgL,CAAAC,KAAA,CAAwBjL,CAAAyJ,KAAxB,CAAf,CACE,MAAOQ,EAAA,EAGTjK,EAAAyJ,KAAA,CAAczJ,CAAAyJ,KAAAvB,QAAA,CAAoB8C,CAApB,CAAwC,EAAxC,CACdE,GAAAC,gBAAA,CAA0BC,QAAQ,CAACC,CAAD,CAAe,CAC/CzK,CAAA,CAAQyK,CAAR,CAAsB,QAAQ,CAAC/B,CAAD,CAAS,CACrCS,CAAA3E,KAAA,CAAakE,CAAb,CADqC,CAAvC,CAGA,OAAOW,EAAA,EAJwC,CAO7CjJ,EAAA,CAAWkK,EAAAI,wBAAX,CAAJ,EACEJ,EAAAI,wBAAA,EAhEyC,CA8E7CC,QAASA,GAAmB,EAAG,CAC7BvL,CAAAyJ,KAAA,CAAc,uBAAd,CAAwCzJ,CAAAyJ,KACxCzJ,EAAAwL,SAAAC,OAAA,EAF6B,CAa/BC,QAASA,GAAc,CAACC,CAAD,CAAc,CAC/BzB,CAAAA,CAAWgB,EAAA3G,QAAA,CAAgBoH,CAAhB,CAAAzB,SAAA,EACf,IAAKA,CAAAA,CAAL,CACE,KAAM/E,GAAA,CAAS,MAAT,CAAN,CAGF,MAAO+E,EAAA0B,IAAA,CAAa,eAAb,CAN4B,CAl+CE;AA4+CvCC,QAASA,GAAU,CAACpC,CAAD,CAAOqC,CAAP,CAAkB,CACnCA,CAAA,CAAYA,CAAZ,EAAyB,GACzB,OAAOrC,EAAAvB,QAAA,CAAa6D,EAAb,CAAgC,QAAQ,CAACC,CAAD,CAASC,CAAT,CAAc,CAC3D,OAAQA,CAAA,CAAMH,CAAN,CAAkB,EAA1B,EAAgCE,CAAAE,YAAA,EAD2B,CAAtD,CAF4B,CASrCC,QAASA,GAAU,EAAG,CACpB,IAAIC,CAEAC,GAAJ,GAUA,CALAC,EAKA,CALStM,CAAAsM,OAKT,GAAcA,EAAA1F,GAAA2F,GAAd,EACE7E,CAaA,CAbS4E,EAaT,CAZArK,CAAA,CAAOqK,EAAA1F,GAAP,CAAkB,CAChB+D,MAAO6B,EAAA7B,MADS,CAEhB8B,aAAcD,EAAAC,aAFE,CAGhBC,WAAYF,EAAAE,WAHI,CAIhBxC,SAAUsC,EAAAtC,SAJM,CAKhByC,cAAeH,EAAAG,cALC,CAAlB,CAYA,CADAP,CACA,CADoBE,EAAAM,UACpB,CAAAN,EAAAM,UAAA,CAAmBC,QAAQ,CAACC,CAAD,CAAQ,CACjC,IAAIC,CACJ,IAAKC,EAAL,CAQEA,EAAA,CAAmC,CAAA,CARrC,KACE,KADqC,IAC5BxL,EAAI,CADwB,CACrByL,CAAhB,CAA2C,IAA3C,GAAuBA,CAAvB,CAA8BH,CAAA,CAAMtL,CAAN,CAA9B,EAAiDA,CAAA,EAAjD,CAEE,CADAuL,CACA,CADST,EAAAY,MAAA,CAAaD,CAAb,CAAmB,QAAnB,CACT,GAAcF,CAAAI,SAAd,EACEb,EAAA,CAAOW,CAAP,CAAAG,eAAA,CAA4B,UAA5B,CAMNhB,EAAA,CAAkBU,CAAlB,CAZiC,CAdrC,EA6BEpF,CA7BF,CA6BW2F,CAMX,CAHAnC,EAAA3G,QAGA,CAHkBmD,CAGlB,CAAA2E,EAAA,CAAkB,CAAA,CA7ClB,CAHoB,CAsDtBiB,QAASA,GAAS,CAACC,CAAD,CAAM9D,CAAN,CAAY+D,CAAZ,CAAoB,CACpC,GAAKD,CAAAA,CAAL,CACE,KAAMpI,GAAA,CAAS,MAAT;AAA2CsE,CAA3C,EAAmD,GAAnD,CAA0D+D,CAA1D,EAAoE,UAApE,CAAN,CAEF,MAAOD,EAJ6B,CAOtCE,QAASA,GAAW,CAACF,CAAD,CAAM9D,CAAN,CAAYiE,CAAZ,CAAmC,CACjDA,CAAJ,EAA6B/M,CAAA,CAAQ4M,CAAR,CAA7B,GACIA,CADJ,CACUA,CAAA,CAAIA,CAAAhN,OAAJ,CAAiB,CAAjB,CADV,CAIA+M,GAAA,CAAUtM,CAAA,CAAWuM,CAAX,CAAV,CAA2B9D,CAA3B,CAAiC,sBAAjC,EACK8D,CAAA,EAAsB,QAAtB,GAAO,MAAOA,EAAd,CAAiCA,CAAAI,YAAAlE,KAAjC,EAAyD,QAAzD,CAAoE,MAAO8D,EADhF,EAEA,OAAOA,EAP8C,CAevDK,QAASA,GAAuB,CAACnE,CAAD,CAAO3I,CAAP,CAAgB,CAC9C,GAAa,gBAAb,GAAI2I,CAAJ,CACE,KAAMtE,GAAA,CAAS,SAAT,CAA8DrE,CAA9D,CAAN,CAF4C,CAchD+M,QAASA,GAAM,CAACxN,CAAD,CAAMyN,CAAN,CAAYC,CAAZ,CAA2B,CACxC,GAAKD,CAAAA,CAAL,CAAW,MAAOzN,EACdgB,EAAAA,CAAOyM,CAAAzJ,MAAA,CAAW,GAAX,CAKX,KAJA,IAAItD,CAAJ,CACIiN,EAAe3N,CADnB,CAEI4N,EAAM5M,CAAAd,OAFV,CAISiB,EAAI,CAAb,CAAgBA,CAAhB,CAAoByM,CAApB,CAAyBzM,CAAA,EAAzB,CACET,CACA,CADMM,CAAA,CAAKG,CAAL,CACN,CAAInB,CAAJ,GACEA,CADF,CACQ,CAAC2N,CAAD,CAAgB3N,CAAhB,EAAqBU,CAArB,CADR,CAIF,OAAKgN,CAAAA,CAAL,EAAsB/M,CAAA,CAAWX,CAAX,CAAtB,CACSqG,EAAA,CAAKsH,CAAL,CAAmB3N,CAAnB,CADT,CAGOA,CAhBiC,CAwB1C6N,QAASA,GAAa,CAACC,CAAD,CAAQ,CAG5B,IAAIrK,EAAOqK,CAAA,CAAM,CAAN,CACPC,EAAAA,CAAUD,CAAA,CAAMA,CAAA5N,OAAN,CAAqB,CAArB,CACd,KAAI8N,EAAa,CAACvK,CAAD,CAEjB,GAAG,CACDA,CAAA,CAAOA,CAAAwK,YACP,IAAKxK,CAAAA,CAAL,CAAW,KACXuK,EAAAjJ,KAAA,CAAgBtB,CAAhB,CAHC,CAAH,MAISA,CAJT,GAIkBsK,CAJlB,CAMA,OAAO1G,EAAA,CAAO2G,CAAP,CAbqB,CA4B9BE,QAASA,GAAS,EAAG,CACnB,MAAOjN,OAAAuB,OAAA,CAAc,IAAd,CADY,CAnoDkB;AAspDvC2L,QAASA,GAAiB,CAACxO,CAAD,CAAS,CAKjCyO,QAASA,EAAM,CAACpO,CAAD,CAAMoJ,CAAN,CAAYiF,CAAZ,CAAqB,CAClC,MAAOrO,EAAA,CAAIoJ,CAAJ,CAAP,GAAqBpJ,CAAA,CAAIoJ,CAAJ,CAArB,CAAiCiF,CAAA,EAAjC,CADkC,CAHpC,IAAIC,EAAkBxO,CAAA,CAAO,WAAP,CAAtB,CACIgF,EAAWhF,CAAA,CAAO,IAAP,CAMX+K,EAAAA,CAAUuD,CAAA,CAAOzO,CAAP,CAAe,SAAf,CAA0BsB,MAA1B,CAGd4J,EAAA0D,SAAA,CAAmB1D,CAAA0D,SAAnB,EAAuCzO,CAEvC,OAAOsO,EAAA,CAAOvD,CAAP,CAAgB,QAAhB,CAA0B,QAAQ,EAAG,CAE1C,IAAInB,EAAU,EAqDd,OAAOT,SAAe,CAACG,CAAD,CAAOoF,CAAP,CAAiBC,CAAjB,CAA2B,CAE7C,GAAa,gBAAb,GAKsBrF,CALtB,CACE,KAAMtE,EAAA,CAAS,SAAT,CAIoBrE,QAJpB,CAAN,CAKA+N,CAAJ,EAAgB9E,CAAA9I,eAAA,CAAuBwI,CAAvB,CAAhB,GACEM,CAAA,CAAQN,CAAR,CADF,CACkB,IADlB,CAGA,OAAOgF,EAAA,CAAO1E,CAAP,CAAgBN,CAAhB,CAAsB,QAAQ,EAAG,CAuNtCsF,QAASA,EAAW,CAACC,CAAD,CAAWC,CAAX,CAAmBC,CAAnB,CAAiCC,CAAjC,CAAwC,CACrDA,CAAL,GAAYA,CAAZ,CAAoBC,CAApB,CACA,OAAO,SAAQ,EAAG,CAChBD,CAAA,CAAMD,CAAN,EAAsB,MAAtB,CAAA,CAA8B,CAACF,CAAD,CAAWC,CAAX,CAAmB7M,SAAnB,CAA9B,CACA,OAAOiN,EAFS,CAFwC,CAtN5D,GAAKR,CAAAA,CAAL,CACE,KAAMF,EAAA,CAAgB,OAAhB,CAEiDlF,CAFjD,CAAN,CAMF,IAAI2F,EAAc,EAAlB,CAGIE,EAAe,EAHnB,CAMIC,EAAY,EANhB,CAQIhG,EAASwF,CAAA,CAAY,WAAZ,CAAyB,QAAzB,CAAmC,MAAnC,CAA2CO,CAA3C,CARb,CAWID,EAAiB,CAEnBG,aAAcJ,CAFK,CAGnBK,cAAeH,CAHI;AAInBI,WAAYH,CAJO,CAenBV,SAAUA,CAfS,CAyBnBpF,KAAMA,CAzBa,CAsCnBuF,SAAUD,CAAA,CAAY,UAAZ,CAAwB,UAAxB,CAtCS,CAiDnBL,QAASK,CAAA,CAAY,UAAZ,CAAwB,SAAxB,CAjDU,CA4DnBY,QAASZ,CAAA,CAAY,UAAZ,CAAwB,SAAxB,CA5DU,CAuEnBpN,MAAOoN,CAAA,CAAY,UAAZ,CAAwB,OAAxB,CAvEY,CAmFnBa,SAAUb,CAAA,CAAY,UAAZ,CAAwB,UAAxB,CAAoC,SAApC,CAnFS,CAqHnBc,UAAWd,CAAA,CAAY,kBAAZ,CAAgC,UAAhC,CArHQ,CAgInBe,OAAQf,CAAA,CAAY,iBAAZ,CAA+B,UAA/B,CAhIW,CA4InBrC,WAAYqC,CAAA,CAAY,qBAAZ,CAAmC,UAAnC,CA5IO,CAyJnBgB,UAAWhB,CAAA,CAAY,kBAAZ,CAAgC,WAAhC,CAzJQ,CAsKnBxF,OAAQA,CAtKW,CAkLnByG,IAAKA,QAAQ,CAACC,CAAD,CAAQ,CACnBV,CAAAnK,KAAA,CAAe6K,CAAf,CACA,OAAO,KAFY,CAlLF,CAwLjBnB,EAAJ,EACEvF,CAAA,CAAOuF,CAAP,CAGF,OAAOO,EA/M+B,CAAjC,CAXwC,CAvDP,CAArC,CAd0B,CA+bnCa,QAASA,GAAkB,CAAChF,CAAD,CAAU,CACnCjJ,CAAA,CAAOiJ,CAAP,CAAgB,CACd,UAAa9B,EADC,CAEd,KAAQtE,EAFM,CAGd,OAAU7C,CAHI,CAId,OAAU+D,EAJI;AAKd,QAAW0B,CALG,CAMd,QAAW9G,CANG,CAOd,SAAY4J,EAPE,CAQd,KAAQ1H,CARM,CASd,KAAQ4D,EATM,CAUd,OAAUQ,EAVI,CAWd,SAAYI,EAXE,CAYd,SAAYvE,EAZE,CAad,YAAeG,CAbD,CAcd,UAAaC,CAdC,CAed,SAAYzC,CAfE,CAgBd,WAAcM,CAhBA,CAiBd,SAAYoC,CAjBE,CAkBd,SAAYC,CAlBE,CAmBd,UAAaQ,EAnBC,CAoBd,QAAWlD,CApBG,CAqBd,QAAWwP,EArBG,CAsBd,OAAU7M,EAtBI,CAuBd,UAAakB,CAvBC,CAwBd,UAAa4L,EAxBC,CAyBd,UAAa,CAACC,QAAS,CAAV,CAzBC,CA0Bd,eAAkB3E,EA1BJ,CA2Bd,SAAYvL,CA3BE,CA4Bd,MAASmQ,EA5BK,CA6Bd,oBAAuB/E,EA7BT,CAAhB,CAgCAgF,GAAA,CAAgB/B,EAAA,CAAkBxO,CAAlB,CAChB,IAAI,CACFuQ,EAAA,CAAc,UAAd,CADE,CAEF,MAAO1I,CAAP,CAAU,CACV0I,EAAA,CAAc,UAAd,CAA0B,EAA1B,CAAAvB,SAAA,CAAuC,SAAvC,CAAkDwB,EAAlD,CADU,CAIZD,EAAA,CAAc,IAAd,CAAoB,CAAC,UAAD,CAApB,CAAkC,CAAC,UAAD,CAChCE,QAAiB,CAACpG,CAAD,CAAW,CAE1BA,CAAA2E,SAAA,CAAkB,CAChB0B,cAAeC,EADC,CAAlB,CAGAtG,EAAA2E,SAAA,CAAkB,UAAlB,CAA8B4B,EAA9B,CAAAb,UAAA,CACY,CACNc,EAAGC,EADG;AAENC,MAAOC,EAFD,CAGNC,SAAUD,EAHJ,CAINE,KAAMC,EAJA,CAKNC,OAAQC,EALF,CAMNC,OAAQC,EANF,CAONC,MAAOC,EAPD,CAQNC,OAAQC,EARF,CASNC,OAAQC,EATF,CAUNC,WAAYC,EAVN,CAWNC,eAAgBC,EAXV,CAYNC,QAASC,EAZH,CAaNC,YAAaC,EAbP,CAcNC,WAAYC,EAdN,CAeNC,QAASC,EAfH,CAgBNC,aAAcC,EAhBR,CAiBNC,OAAQC,EAjBF,CAkBNC,OAAQC,EAlBF,CAmBNC,KAAMC,EAnBA,CAoBNC,UAAWC,EApBL,CAqBNC,OAAQC,EArBF,CAsBNC,cAAeC,EAtBT,CAuBNC,YAAaC,EAvBP,CAwBNC,SAAUC,EAxBJ,CAyBNC,OAAQC,EAzBF,CA0BNC,QAASC,EA1BH,CA2BNC,SAAUC,EA3BJ,CA4BNC,aAAcC,EA5BR,CA6BNC,gBAAiBC,EA7BX,CA8BNC,UAAWC,EA9BL,CA+BNC,aAAcC,EA/BR,CAgCNC,QAASC,EAhCH,CAiCNC,OAAQC,EAjCF,CAkCNC,SAAUC,EAlCJ,CAmCNC,QAASC,EAnCH,CAoCNC,UAAWD,EApCL,CAqCNE,SAAUC,EArCJ,CAsCNC,WAAYD,EAtCN,CAuCNE,UAAWC,EAvCL,CAwCNC,YAAaD,EAxCP,CAyCNE,UAAWC,EAzCL,CA0CNC,YAAaD,EA1CP;AA2CNE,QAASC,EA3CH,CA4CNC,eAAgBC,EA5CV,CADZ,CAAAhG,UAAA,CA+CY,CACRmD,UAAW8C,EADH,CA/CZ,CAAAjG,UAAA,CAkDYkG,EAlDZ,CAAAlG,UAAA,CAmDYmG,EAnDZ,CAoDA7L,EAAA2E,SAAA,CAAkB,CAChBmH,cAAeC,EADC,CAEhBC,SAAUC,EAFM,CAGhBC,SAAUC,EAHM,CAIhBC,cAAeC,EAJC,CAKhBC,YAAaC,EALG,CAMhBC,UAAWC,EANK,CAOhBC,kBAAmBC,EAPH,CAQhBC,QAASC,EARO,CAShBC,aAAcC,EATE,CAUhBC,UAAWC,EAVK,CAWhBC,MAAOC,EAXS,CAYhBC,aAAcC,EAZE,CAahBC,UAAWC,EAbK,CAchBC,KAAMC,EAdU,CAehBC,OAAQC,EAfQ,CAgBhBC,WAAYC,EAhBI,CAiBhBC,GAAIC,EAjBY,CAkBhBC,IAAKC,EAlBW,CAmBhBC,KAAMC,EAnBU,CAoBhBC,aAAcC,EApBE,CAqBhBC,SAAUC,EArBM,CAsBhBC,eAAgBC,EAtBA,CAuBhBC,iBAAkBC,EAvBF,CAwBhBC,cAAeC,EAxBC,CAyBhBC,SAAUC,EAzBM,CA0BhBC,QAASC,EA1BO,CA2BhBC,MAAOC,EA3BS,CA4BhBC,gBAAiBC,EA5BD,CA6BhBC,SAAUC,EA7BM,CAAlB,CAzD0B,CADI,CAAlC,CAxCmC,CAoRrCC,QAASA,GAAS,CAACpQ,CAAD,CAAO,CACvB,MAAOA,EAAAvB,QAAA,CACG4R,EADH;AACyB,QAAQ,CAACC,CAAD,CAAIjO,CAAJ,CAAeE,CAAf,CAAuBgO,CAAvB,CAA+B,CACnE,MAAOA,EAAA,CAAShO,CAAAiO,YAAA,EAAT,CAAgCjO,CAD4B,CADhE,CAAA9D,QAAA,CAIGgS,EAJH,CAIoB,OAJpB,CADgB,CAgCzBC,QAASA,GAAiB,CAACrW,CAAD,CAAO,CAG3BtD,CAAAA,CAAWsD,CAAAtD,SACf,OAAOA,EAAP,GAAoBC,EAApB,EAAyC,CAACD,CAA1C,EAnwBuB4Z,CAmwBvB,GAAsD5Z,CAJvB,CAOjC6Z,QAASA,GAAmB,CAACrS,CAAD,CAAOlH,CAAP,CAAgB,CAAA,IACtCwZ,CADsC,CACjCnQ,CADiC,CAEtCoQ,EAAWzZ,CAAA0Z,uBAAA,EAF2B,CAGtCrM,EAAQ,EAEZ,IAfQsM,EAAAxP,KAAA,CAeajD,CAfb,CAeR,CAGO,CAELsS,CAAA,CAAMA,CAAN,EAAaC,CAAAG,YAAA,CAAqB5Z,CAAA6Z,cAAA,CAAsB,KAAtB,CAArB,CACbxQ,EAAA,CAAM,CAACyQ,EAAAC,KAAA,CAAqB7S,CAArB,CAAD,EAA+B,CAAC,EAAD,CAAK,EAAL,CAA/B,EAAyC,CAAzC,CAAAkE,YAAA,EACN4O,EAAA,CAAOC,EAAA,CAAQ5Q,CAAR,CAAP,EAAuB4Q,EAAAC,SACvBV,EAAAW,UAAA,CAAgBH,CAAA,CAAK,CAAL,CAAhB,CAA0B9S,CAAAE,QAAA,CAAagT,EAAb,CAA+B,WAA/B,CAA1B,CAAwEJ,CAAA,CAAK,CAAL,CAIxE,KADAtZ,CACA,CADIsZ,CAAA,CAAK,CAAL,CACJ,CAAOtZ,CAAA,EAAP,CAAA,CACE8Y,CAAA,CAAMA,CAAAa,UAGRhN,EAAA,CAAQ7H,EAAA,CAAO6H,CAAP,CAAcmM,CAAAc,WAAd,CAERd,EAAA,CAAMC,CAAAc,WACNf,EAAAgB,YAAA,CAAkB,EAhBb,CAHP,IAEEnN,EAAA/I,KAAA,CAAWtE,CAAAya,eAAA,CAAuBvT,CAAvB,CAAX,CAqBFuS,EAAAe,YAAA,CAAuB,EACvBf,EAAAU,UAAA,CAAqB,EACrBra,EAAA,CAAQuN,CAAR,CAAe,QAAQ,CAACrK,CAAD,CAAO,CAC5ByW,CAAAG,YAAA,CAAqB5W,CAArB,CAD4B,CAA9B,CAIA;MAAOyW,EAlCmC,CAqD5ClN,QAASA,EAAM,CAAC9I,CAAD,CAAU,CACvB,GAAIA,CAAJ,WAAuB8I,EAAvB,CACE,MAAO9I,EAGT,KAAIiX,CAEA9a,EAAA,CAAS6D,CAAT,CAAJ,GACEA,CACA,CADUkX,CAAA,CAAKlX,CAAL,CACV,CAAAiX,CAAA,CAAc,CAAA,CAFhB,CAIA,IAAM,EAAA,IAAA,WAAgBnO,EAAhB,CAAN,CAA+B,CAC7B,GAAImO,CAAJ,EAAwC,GAAxC,EAAmBjX,CAAAwB,OAAA,CAAe,CAAf,CAAnB,CACE,KAAM2V,GAAA,CAAa,OAAb,CAAN,CAEF,MAAO,KAAIrO,CAAJ,CAAW9I,CAAX,CAJsB,CAO/B,GAAIiX,CAAJ,CAAiB,CAjCjB1a,CAAA,CAAqBb,CACrB,KAAI0b,CAGF,EAAA,CADF,CAAKA,CAAL,CAAcC,EAAAf,KAAA,CAAuB7S,CAAvB,CAAd,EACS,CAAClH,CAAA6Z,cAAA,CAAsBgB,CAAA,CAAO,CAAP,CAAtB,CAAD,CADT,CAIA,CAAKA,CAAL,CAActB,EAAA,CAAoBrS,CAApB,CAA0BlH,CAA1B,CAAd,EACS6a,CAAAP,WADT,CAIO,EAsBU,CACfS,EAAA,CAAe,IAAf,CAAqB,CAArB,CAnBqB,CAyBzBC,QAASA,GAAW,CAACvX,CAAD,CAAU,CAC5B,MAAOA,EAAAwX,UAAA,CAAkB,CAAA,CAAlB,CADqB,CAI9BC,QAASA,GAAY,CAACzX,CAAD,CAAU0X,CAAV,CAA2B,CACzCA,CAAL,EAAsBC,EAAA,CAAiB3X,CAAjB,CAEtB,IAAIA,CAAA4X,iBAAJ,CAEE,IADA,IAAIC,EAAc7X,CAAA4X,iBAAA,CAAyB,GAAzB,CAAlB,CACS3a,EAAI,CADb,CACgB6a,EAAID,CAAA7b,OAApB,CAAwCiB,CAAxC,CAA4C6a,CAA5C,CAA+C7a,CAAA,EAA/C,CACE0a,EAAA,CAAiBE,CAAA,CAAY5a,CAAZ,CAAjB,CAN0C,CAWhD8a,QAASA,GAAS,CAAC/X,CAAD,CAAUgY,CAAV,CAAgB3V,CAAhB,CAAoB4V,CAApB,CAAiC,CACjD,GAAIrZ,CAAA,CAAUqZ,CAAV,CAAJ,CAA4B,KAAMd,GAAA,CAAa,SAAb,CAAN,CAG5B,IAAI3O,GADA0P,CACA1P,CADe2P,EAAA,CAAmBnY,CAAnB,CACfwI,GAAyB0P,CAAA1P,OAA7B,CACI4P,EAASF,CAATE,EAAyBF,CAAAE,OAE7B,IAAKA,CAAL,CAEA,GAAKJ,CAAL,CAQE3b,CAAA,CAAQ2b,CAAAlY,MAAA,CAAW,GAAX,CAAR;AAAyB,QAAQ,CAACkY,CAAD,CAAO,CACtC,GAAIpZ,CAAA,CAAUyD,CAAV,CAAJ,CAAmB,CACjB,IAAIgW,EAAc7P,CAAA,CAAOwP,CAAP,CAClB9X,GAAA,CAAYmY,CAAZ,EAA2B,EAA3B,CAA+BhW,CAA/B,CACA,IAAIgW,CAAJ,EAAwC,CAAxC,CAAmBA,CAAArc,OAAnB,CACE,MAJe,CAQGgE,CAtLtBsY,oBAAA,CAsL+BN,CAtL/B,CAsLqCI,CAtLrC,CAAsC,CAAA,CAAtC,CAuLA,QAAO5P,CAAA,CAAOwP,CAAP,CAV+B,CAAxC,CARF,KACE,KAAKA,CAAL,GAAaxP,EAAb,CACe,UAGb,GAHIwP,CAGJ,EAFwBhY,CAxKxBsY,oBAAA,CAwKiCN,CAxKjC,CAwKuCI,CAxKvC,CAAsC,CAAA,CAAtC,CA0KA,CAAA,OAAO5P,CAAA,CAAOwP,CAAP,CAdsC,CAgCnDL,QAASA,GAAgB,CAAC3X,CAAD,CAAUkF,CAAV,CAAgB,CACvC,IAAIqT,EAAYvY,CAAAwY,MAAhB,CACIN,EAAeK,CAAfL,EAA4BO,EAAA,CAAQF,CAAR,CAE5BL,EAAJ,GACMhT,CAAJ,CACE,OAAOgT,CAAA3R,KAAA,CAAkBrB,CAAlB,CADT,EAKIgT,CAAAE,OAOJ,GANMF,CAAA1P,OAAAI,SAGJ,EAFEsP,CAAAE,OAAA,CAAoB,EAApB,CAAwB,UAAxB,CAEF,CAAAL,EAAA,CAAU/X,CAAV,CAGF,EADA,OAAOyY,EAAA,CAAQF,CAAR,CACP,CAAAvY,CAAAwY,MAAA,CAAgB7c,CAZhB,CADF,CAJuC,CAsBzCwc,QAASA,GAAkB,CAACnY,CAAD,CAAU0Y,CAAV,CAA6B,CAAA,IAClDH,EAAYvY,CAAAwY,MADsC,CAElDN,EAAeK,CAAfL,EAA4BO,EAAA,CAAQF,CAAR,CAE5BG,EAAJ,EAA0BR,CAAAA,CAA1B,GACElY,CAAAwY,MACA,CADgBD,CAChB,CA7MyB,EAAEI,EA6M3B,CAAAT,CAAA,CAAeO,EAAA,CAAQF,CAAR,CAAf,CAAoC,CAAC/P,OAAQ,EAAT,CAAajC,KAAM,EAAnB,CAAuB6R,OAAQzc,CAA/B,CAFtC,CAKA,OAAOuc,EAT+C,CAaxDU,QAASA,GAAU,CAAC5Y,CAAD,CAAUxD,CAAV,CAAeY,CAAf,CAAsB,CACvC,GAAIwY,EAAA,CAAkB5V,CAAlB,CAAJ,CAAgC,CAE9B,IAAI6Y,EAAiBja,CAAA,CAAUxB,CAAV,CAArB,CACI0b,EAAiB,CAACD,CAAlBC,EAAoCtc,CAApCsc,EAA2C,CAACja,CAAA,CAASrC,CAAT,CADhD;AAEIuc,EAAa,CAACvc,CAEd+J,EAAAA,EADA2R,CACA3R,CADe4R,EAAA,CAAmBnY,CAAnB,CAA4B,CAAC8Y,CAA7B,CACfvS,GAAuB2R,CAAA3R,KAE3B,IAAIsS,CAAJ,CACEtS,CAAA,CAAK/J,CAAL,CAAA,CAAYY,CADd,KAEO,CACL,GAAI2b,CAAJ,CACE,MAAOxS,EAEP,IAAIuS,CAAJ,CAEE,MAAOvS,EAAP,EAAeA,CAAA,CAAK/J,CAAL,CAEfkB,EAAA,CAAO6I,CAAP,CAAa/J,CAAb,CARC,CAVuB,CADO,CA0BzCwc,QAASA,GAAc,CAAChZ,CAAD,CAAUiZ,CAAV,CAAoB,CACzC,MAAKjZ,EAAAoF,aAAL,CAEqC,EAFrC,CACQzB,CAAC,GAADA,EAAQ3D,CAAAoF,aAAA,CAAqB,OAArB,CAARzB,EAAyC,EAAzCA,EAA+C,GAA/CA,SAAA,CAA4D,SAA5D,CAAuE,GAAvE,CAAAtD,QAAA,CACI,GADJ,CACU4Y,CADV,CACqB,GADrB,CADR,CAAkC,CAAA,CADO,CAM3CC,QAASA,GAAiB,CAAClZ,CAAD,CAAUmZ,CAAV,CAAsB,CAC1CA,CAAJ,EAAkBnZ,CAAAoZ,aAAlB,EACE/c,CAAA,CAAQ8c,CAAArZ,MAAA,CAAiB,GAAjB,CAAR,CAA+B,QAAQ,CAACuZ,CAAD,CAAW,CAChDrZ,CAAAoZ,aAAA,CAAqB,OAArB,CAA8BlC,CAAA,CAC1BvT,CAAC,GAADA,EAAQ3D,CAAAoF,aAAA,CAAqB,OAArB,CAARzB,EAAyC,EAAzCA,EAA+C,GAA/CA,SAAA,CACS,SADT,CACoB,GADpB,CAAAA,QAAA,CAES,GAFT,CAEeuT,CAAA,CAAKmC,CAAL,CAFf,CAEgC,GAFhC,CAEqC,GAFrC,CAD0B,CAA9B,CADgD,CAAlD,CAF4C,CAYhDC,QAASA,GAAc,CAACtZ,CAAD,CAAUmZ,CAAV,CAAsB,CAC3C,GAAIA,CAAJ,EAAkBnZ,CAAAoZ,aAAlB,CAAwC,CACtC,IAAIG,EAAkB5V,CAAC,GAADA,EAAQ3D,CAAAoF,aAAA,CAAqB,OAArB,CAARzB,EAAyC,EAAzCA,EAA+C,GAA/CA,SAAA,CACW,SADX,CACsB,GADtB,CAGtBtH;CAAA,CAAQ8c,CAAArZ,MAAA,CAAiB,GAAjB,CAAR,CAA+B,QAAQ,CAACuZ,CAAD,CAAW,CAChDA,CAAA,CAAWnC,CAAA,CAAKmC,CAAL,CAC4C,GAAvD,GAAIE,CAAAlZ,QAAA,CAAwB,GAAxB,CAA8BgZ,CAA9B,CAAyC,GAAzC,CAAJ,GACEE,CADF,EACqBF,CADrB,CACgC,GADhC,CAFgD,CAAlD,CAOArZ,EAAAoZ,aAAA,CAAqB,OAArB,CAA8BlC,CAAA,CAAKqC,CAAL,CAA9B,CAXsC,CADG,CAiB7CjC,QAASA,GAAc,CAACkC,CAAD,CAAOC,CAAP,CAAiB,CAGtC,GAAIA,CAAJ,CAGE,GAAIA,CAAAxd,SAAJ,CACEud,CAAA,CAAKA,CAAAxd,OAAA,EAAL,CAAA,CAAsByd,CADxB,KAEO,CACL,IAAIzd,EAASyd,CAAAzd,OAGb,IAAsB,QAAtB,GAAI,MAAOA,EAAX,EAAkCyd,CAAAhe,OAAlC,GAAsDge,CAAtD,CACE,IAAIzd,CAAJ,CACE,IAAS,IAAAiB,EAAI,CAAb,CAAgBA,CAAhB,CAAoBjB,CAApB,CAA4BiB,CAAA,EAA5B,CACEuc,CAAA,CAAKA,CAAAxd,OAAA,EAAL,CAAA,CAAsByd,CAAA,CAASxc,CAAT,CAF1B,CADF,IAOEuc,EAAA,CAAKA,CAAAxd,OAAA,EAAL,CAAA,CAAsByd,CAXnB,CAR6B,CA0BxCC,QAASA,GAAgB,CAAC1Z,CAAD,CAAUkF,CAAV,CAAgB,CACvC,MAAOyU,GAAA,CAAoB3Z,CAApB,CAA6B,GAA7B,EAAoCkF,CAApC,EAA4C,cAA5C,EAA8D,YAA9D,CADgC,CAIzCyU,QAASA,GAAmB,CAAC3Z,CAAD,CAAUkF,CAAV,CAAgB9H,CAAhB,CAAuB,CAjgC1ByY,CAogCvB,EAAI7V,CAAA/D,SAAJ,GACE+D,CADF,CACYA,CAAA4Z,gBADZ,CAKA,KAFIC,CAEJ,CAFYzd,CAAA,CAAQ8I,CAAR,CAAA,CAAgBA,CAAhB,CAAuB,CAACA,CAAD,CAEnC,CAAOlF,CAAP,CAAA,CAAgB,CACd,IADc,IACL/C,EAAI,CADC,CACEW,EAAKic,CAAA7d,OAArB,CAAmCiB,CAAnC,CAAuCW,CAAvC,CAA2CX,CAAA,EAA3C,CACE,IAAKG,CAAL,CAAa+F,CAAAoD,KAAA,CAAYvG,CAAZ,CAAqB6Z,CAAA,CAAM5c,CAAN,CAArB,CAAb,IAAiDtB,CAAjD,CAA4D,MAAOyB,EAMrE4C,EAAA,CAAUA,CAAA8Z,WAAV;AAhhC8BC,EAghC9B,GAAiC/Z,CAAA/D,SAAjC,EAAqF+D,CAAAga,KARvE,CARiC,CAoBnDC,QAASA,GAAW,CAACja,CAAD,CAAU,CAE5B,IADAyX,EAAA,CAAazX,CAAb,CAAsB,CAAA,CAAtB,CACA,CAAOA,CAAA8W,WAAP,CAAA,CACE9W,CAAAka,YAAA,CAAoBla,CAAA8W,WAApB,CAH0B,CAO9BqD,QAASA,GAAY,CAACna,CAAD,CAAUoa,CAAV,CAAoB,CAClCA,CAAL,EAAe3C,EAAA,CAAazX,CAAb,CACf,KAAI5B,EAAS4B,CAAA8Z,WACT1b,EAAJ,EAAYA,CAAA8b,YAAA,CAAmBla,CAAnB,CAH2B,CAOzCqa,QAASA,GAAoB,CAACC,CAAD,CAASC,CAAT,CAAc,CACzCA,CAAA,CAAMA,CAAN,EAAa9e,CACb,IAAgC,UAAhC,GAAI8e,CAAA7e,SAAA8e,WAAJ,CAIED,CAAAE,WAAA,CAAeH,CAAf,CAJF,KAOEnX,EAAA,CAAOoX,CAAP,CAAAvS,GAAA,CAAe,MAAf,CAAuBsS,CAAvB,CATuC,CA0E3CI,QAASA,GAAkB,CAAC1a,CAAD,CAAUkF,CAAV,CAAgB,CAEzC,IAAIyV,EAAcC,EAAA,CAAa1V,CAAAyC,YAAA,EAAb,CAGlB,OAAOgT,EAAP,EAAsBE,EAAA,CAAiB9a,EAAA,CAAUC,CAAV,CAAjB,CAAtB,EAA8D2a,CALrB,CAQ3CG,QAASA,GAAkB,CAAC9a,CAAD,CAAUkF,CAAV,CAAgB,CACzC,IAAI1F,EAAWQ,CAAAR,SACf,QAAqB,OAArB,GAAQA,CAAR,EAA6C,UAA7C,GAAgCA,CAAhC,GAA4Dub,EAAA,CAAa7V,CAAb,CAFnB,CA6K3C8V,QAASA,GAAkB,CAAChb,CAAD,CAAUwI,CAAV,CAAkB,CAC3C,IAAIyS,EAAeA,QAAQ,CAACC,CAAD,CAAQlD,CAAR,CAAc,CAEvCkD,CAAAC,mBAAA,CAA2BC,QAAQ,EAAG,CACpC,MAAOF,EAAAG,iBAD6B,CAItC,KAAIC;AAAW9S,CAAA,CAAOwP,CAAP,EAAekD,CAAAlD,KAAf,CAAf,CACIuD,EAAiBD,CAAA,CAAWA,CAAAtf,OAAX,CAA6B,CAElD,IAAKuf,CAAL,CAAA,CAEA,GAAI5c,CAAA,CAAYuc,CAAAM,4BAAZ,CAAJ,CAAoD,CAClD,IAAIC,EAAmCP,CAAAQ,yBACvCR,EAAAQ,yBAAA,CAAiCC,QAAQ,EAAG,CAC1CT,CAAAM,4BAAA,CAAoC,CAAA,CAEhCN,EAAAU,gBAAJ,EACEV,CAAAU,gBAAA,EAGEH,EAAJ,EACEA,CAAA9e,KAAA,CAAsCue,CAAtC,CARwC,CAFM,CAepDA,CAAAW,8BAAA,CAAsCC,QAAQ,EAAG,CAC/C,MAA6C,CAAA,CAA7C,GAAOZ,CAAAM,4BADwC,CAK3B,EAAtB,CAAKD,CAAL,GACED,CADF,CACaha,EAAA,CAAYga,CAAZ,CADb,CAIA,KAAS,IAAAre,EAAI,CAAb,CAAgBA,CAAhB,CAAoBse,CAApB,CAAoCte,CAAA,EAApC,CACOie,CAAAW,8BAAA,EAAL,EACEP,CAAA,CAASre,CAAT,CAAAN,KAAA,CAAiBqD,CAAjB,CAA0Bkb,CAA1B,CA5BJ,CATuC,CA4CzCD,EAAAvS,KAAA,CAAoB1I,CACpB,OAAOib,EA9CoC,CAuS7C5F,QAASA,GAAgB,EAAG,CAC1B,IAAA0G,KAAA,CAAYC,QAAiB,EAAG,CAC9B,MAAOte,EAAA,CAAOoL,CAAP,CAAe,CACpBmT,SAAUA,QAAQ,CAAC1c,CAAD,CAAO2c,CAAP,CAAgB,CAC5B3c,CAAAG,KAAJ,GAAeH,CAAf,CAAsBA,CAAA,CAAK,CAAL,CAAtB,CACA;MAAOyZ,GAAA,CAAezZ,CAAf,CAAqB2c,CAArB,CAFyB,CADd,CAKpBC,SAAUA,QAAQ,CAAC5c,CAAD,CAAO2c,CAAP,CAAgB,CAC5B3c,CAAAG,KAAJ,GAAeH,CAAf,CAAsBA,CAAA,CAAK,CAAL,CAAtB,CACA,OAAO+Z,GAAA,CAAe/Z,CAAf,CAAqB2c,CAArB,CAFyB,CALd,CASpBE,YAAaA,QAAQ,CAAC7c,CAAD,CAAO2c,CAAP,CAAgB,CAC/B3c,CAAAG,KAAJ,GAAeH,CAAf,CAAsBA,CAAA,CAAK,CAAL,CAAtB,CACA,OAAO2Z,GAAA,CAAkB3Z,CAAlB,CAAwB2c,CAAxB,CAF4B,CATjB,CAAf,CADuB,CADN,CA+B5BG,QAASA,GAAO,CAACvgB,CAAD,CAAMwgB,CAAN,CAAiB,CAC/B,IAAI9f,EAAMV,CAANU,EAAaV,CAAA2B,UAEjB,IAAIjB,CAAJ,CAIE,MAHmB,UAGZA,GAHH,MAAOA,EAGJA,GAFLA,CAEKA,CAFCV,CAAA2B,UAAA,EAEDjB,EAAAA,CAGL+f,EAAAA,CAAU,MAAOzgB,EAOrB,OALEU,EAKF,CANe,UAAf,EAAI+f,CAAJ,EAAyC,QAAzC,EAA8BA,CAA9B,EAA6D,IAA7D,GAAqDzgB,CAArD,CACQA,CAAA2B,UADR,CACwB8e,CADxB,CACkC,GADlC,CACwC,CAACD,CAAD,EAAcjf,EAAd,GADxC,CAGQkf,CAHR,CAGkB,GAHlB,CAGwBzgB,CAdO,CAuBjC0gB,QAASA,GAAO,CAACrc,CAAD,CAAQsc,CAAR,CAAqB,CACnC,GAAIA,CAAJ,CAAiB,CACf,IAAInf,EAAM,CACV,KAAAD,QAAA,CAAeqf,QAAQ,EAAG,CACxB,MAAO,EAAEpf,CADe,CAFX,CAMjBjB,CAAA,CAAQ8D,CAAR,CAAe,IAAAwc,IAAf,CAAyB,IAAzB,CAPmC,CA0GrCC,QAASA,GAAM,CAACva,CAAD,CAAK,CAKlB,MAAA,CADIwa,CACJ,CAFaxa,CAAArD,SAAA,EAAA2E,QAAAmZ,CAAsBC,EAAtBD,CAAsC,EAAtCA,CACF5b,MAAA,CAAa8b,EAAb,CACX,EACS,WADT,CACuBrZ,CAACkZ,CAAA,CAAK,CAAL,CAADlZ,EAAY,EAAZA,SAAA,CAAwB,WAAxB;AAAqC,GAArC,CADvB,CACmE,GADnE,CAGO,IARW,CAiiBpBsC,QAASA,GAAc,CAACgX,CAAD,CAAgB1X,CAAhB,CAA0B,CAuC/C2X,QAASA,EAAa,CAACC,CAAD,CAAW,CAC/B,MAAO,SAAQ,CAAC3gB,CAAD,CAAMY,CAAN,CAAa,CAC1B,GAAIyB,CAAA,CAASrC,CAAT,CAAJ,CACEH,CAAA,CAAQG,CAAR,CAAaU,EAAA,CAAcigB,CAAd,CAAb,CADF,KAGE,OAAOA,EAAA,CAAS3gB,CAAT,CAAcY,CAAd,CAJiB,CADG,CAUjCqN,QAASA,EAAQ,CAACvF,CAAD,CAAOkY,CAAP,CAAkB,CACjC/T,EAAA,CAAwBnE,CAAxB,CAA8B,SAA9B,CACA,IAAIzI,CAAA,CAAW2gB,CAAX,CAAJ,EAA6BhhB,CAAA,CAAQghB,CAAR,CAA7B,CACEA,CAAA,CAAYC,CAAAC,YAAA,CAA6BF,CAA7B,CAEd,IAAKrB,CAAAqB,CAAArB,KAAL,CACE,KAAM3R,GAAA,CAAgB,MAAhB,CAA2ElF,CAA3E,CAAN,CAEF,MAAOqY,EAAA,CAAcrY,CAAd,CAtDYsY,UAsDZ,CAAP,CAA8CJ,CARb,CAWnCK,QAASA,EAAkB,CAACvY,CAAD,CAAOiF,CAAP,CAAgB,CACzC,MAAOuT,SAA4B,EAAG,CACpC,IAAI5c,EAAS6c,CAAAzX,OAAA,CAAwBiE,CAAxB,CAAiC,IAAjC,CACb,IAAIxL,CAAA,CAAYmC,CAAZ,CAAJ,CACE,KAAMsJ,GAAA,CAAgB,OAAhB,CAAyFlF,CAAzF,CAAN,CAEF,MAAOpE,EAL6B,CADG,CAU3CqJ,QAASA,EAAO,CAACjF,CAAD,CAAO0Y,CAAP,CAAkBC,CAAlB,CAA2B,CACzC,MAAOpT,EAAA,CAASvF,CAAT,CAAe,CACpB6W,KAAkB,CAAA,CAAZ,GAAA8B,CAAA,CAAoBJ,CAAA,CAAmBvY,CAAnB,CAAyB0Y,CAAzB,CAApB,CAA0DA,CAD5C,CAAf,CADkC,CAiC3CE,QAASA,EAAW,CAACb,CAAD,CAAgB,CAAA,IAC9BjS,EAAY,EADkB,CACd+S,CACpB1hB,EAAA,CAAQ4gB,CAAR,CAAuB,QAAQ,CAAClY,CAAD,CAAS,CAItCiZ,QAASA,EAAc,CAACpT,CAAD,CAAQ,CAAA,IACzB3N,CADyB,CACtBW,CACFX,EAAA,CAAI,CAAT,KAAYW,CAAZ,CAAiBgN,CAAA5O,OAAjB,CAA+BiB,CAA/B,CAAmCW,CAAnC,CAAuCX,CAAA,EAAvC,CAA4C,CAAA,IACtCghB,EAAarT,CAAA,CAAM3N,CAAN,CADyB,CAEtCwN,EAAW4S,CAAAhW,IAAA,CAAqB4W,CAAA,CAAW,CAAX,CAArB,CAEfxT,EAAA,CAASwT,CAAA,CAAW,CAAX,CAAT,CAAAzb,MAAA,CAA8BiI,CAA9B;AAAwCwT,CAAA,CAAW,CAAX,CAAxC,CAJ0C,CAFf,CAH/B,GAAI,CAAAC,CAAA7W,IAAA,CAAkBtC,CAAlB,CAAJ,CAAA,CACAmZ,CAAAvB,IAAA,CAAkB5X,CAAlB,CAA0B,CAAA,CAA1B,CAYA,IAAI,CACE5I,CAAA,CAAS4I,CAAT,CAAJ,EACEgZ,CAGA,CAHW/R,EAAA,CAAcjH,CAAd,CAGX,CAFAiG,CAEA,CAFYA,CAAAjJ,OAAA,CAAiB+b,CAAA,CAAYC,CAAAzT,SAAZ,CAAjB,CAAAvI,OAAA,CAAwDgc,CAAA5S,WAAxD,CAEZ,CADA6S,CAAA,CAAeD,CAAA9S,aAAf,CACA,CAAA+S,CAAA,CAAeD,CAAA7S,cAAf,CAJF,EAKWzO,CAAA,CAAWsI,CAAX,CAAJ,CACHiG,CAAAnK,KAAA,CAAewc,CAAAnX,OAAA,CAAwBnB,CAAxB,CAAf,CADG,CAEI3I,CAAA,CAAQ2I,CAAR,CAAJ,CACHiG,CAAAnK,KAAA,CAAewc,CAAAnX,OAAA,CAAwBnB,CAAxB,CAAf,CADG,CAGLmE,EAAA,CAAYnE,CAAZ,CAAoB,QAApB,CAXA,CAaF,MAAOzB,CAAP,CAAU,CAYV,KAXIlH,EAAA,CAAQ2I,CAAR,CAWE,GAVJA,CAUI,CAVKA,CAAA,CAAOA,CAAA/I,OAAP,CAAuB,CAAvB,CAUL,EARFsH,CAAA6a,QAQE,EARW7a,CAAA8a,MAQX,EARqD,EAQrD,EARsB9a,CAAA8a,MAAA/d,QAAA,CAAgBiD,CAAA6a,QAAhB,CAQtB,GAFJ7a,CAEI,CAFAA,CAAA6a,QAEA,CAFY,IAEZ,CAFmB7a,CAAA8a,MAEnB,EAAAhU,EAAA,CAAgB,UAAhB,CACIrF,CADJ,CACYzB,CAAA8a,MADZ,EACuB9a,CAAA6a,QADvB,EACoC7a,CADpC,CAAN,CAZU,CA1BZ,CADsC,CAAxC,CA2CA,OAAO0H,EA7C2B,CAoDpCqT,QAASA,EAAsB,CAACC,CAAD,CAAQnU,CAAR,CAAiB,CAE9CoU,QAASA,EAAU,CAACC,CAAD,CAAcC,CAAd,CAAsB,CACvC,GAAIH,CAAA5hB,eAAA,CAAqB8hB,CAArB,CAAJ,CAAuC,CACrC,GAAIF,CAAA,CAAME,CAAN,CAAJ,GAA2BE,CAA3B,CACE,KAAMtU,GAAA,CAAgB,MAAhB,CACIoU,CADJ,CACkB,MADlB,CAC2BjV,CAAAlF,KAAA,CAAU,MAAV,CAD3B,CAAN,CAGF,MAAOia,EAAA,CAAME,CAAN,CAL8B,CAOrC,GAAI,CAGF,MAFAjV,EAAA1D,QAAA,CAAa2Y,CAAb,CAEO;AADPF,CAAA,CAAME,CAAN,CACO,CADcE,CACd,CAAAJ,CAAA,CAAME,CAAN,CAAA,CAAqBrU,CAAA,CAAQqU,CAAR,CAAqBC,CAArB,CAH1B,CAIF,MAAOE,CAAP,CAAY,CAIZ,KAHIL,EAAA,CAAME,CAAN,CAGEG,GAHqBD,CAGrBC,EAFJ,OAAOL,CAAA,CAAME,CAAN,CAEHG,CAAAA,CAAN,CAJY,CAJd,OASU,CACRpV,CAAAqV,MAAA,EADQ,CAjB2B,CAuBzC1Y,QAASA,EAAM,CAAC7D,CAAD,CAAKD,CAAL,CAAWyc,CAAX,CAAmBL,CAAnB,CAAgC,CACvB,QAAtB,GAAI,MAAOK,EAAX,GACEL,CACA,CADcK,CACd,CAAAA,CAAA,CAAS,IAFX,CAD6C,KAMzChC,EAAO,EANkC,CAOzCiC,EAAU7Y,EAAA8Y,WAAA,CAA0B1c,CAA1B,CAA8BkD,CAA9B,CAAwCiZ,CAAxC,CAP+B,CAQzCxiB,CARyC,CAQjCiB,CARiC,CASzCT,CAECS,EAAA,CAAI,CAAT,KAAYjB,CAAZ,CAAqB8iB,CAAA9iB,OAArB,CAAqCiB,CAArC,CAAyCjB,CAAzC,CAAiDiB,CAAA,EAAjD,CAAsD,CACpDT,CAAA,CAAMsiB,CAAA,CAAQ7hB,CAAR,CACN,IAAmB,QAAnB,GAAI,MAAOT,EAAX,CACE,KAAM4N,GAAA,CAAgB,MAAhB,CACyE5N,CADzE,CAAN,CAGFqgB,CAAAhc,KAAA,CACEge,CAAA,EAAUA,CAAAniB,eAAA,CAAsBF,CAAtB,CAAV,CACEqiB,CAAA,CAAOriB,CAAP,CADF,CAEE+hB,CAAA,CAAW/hB,CAAX,CAAgBgiB,CAAhB,CAHJ,CANoD,CAYlDpiB,CAAA,CAAQiG,CAAR,CAAJ,GACEA,CADF,CACOA,CAAA,CAAGrG,CAAH,CADP,CAMA,OAAOqG,EAAAG,MAAA,CAASJ,CAAT,CAAeya,CAAf,CA7BsC,CA0C/C,MAAO,CACL3W,OAAQA,CADH,CAELoX,YAZFA,QAAoB,CAAC0B,CAAD,CAAOH,CAAP,CAAeL,CAAf,CAA4B,CAI9C,IAAIS,EAAWliB,MAAAuB,OAAA,CAAc4gB,CAAC9iB,CAAA,CAAQ4iB,CAAR,CAAA,CAAgBA,CAAA,CAAKA,CAAAhjB,OAAL,CAAmB,CAAnB,CAAhB,CAAwCgjB,CAAzCE,WAAd,EAA0E,IAA1E,CACXC,EAAAA,CAAgBjZ,CAAA,CAAO8Y,CAAP,CAAaC,CAAb,CAAuBJ,CAAvB,CAA+BL,CAA/B,CAEpB,OAAO3f,EAAA,CAASsgB,CAAT,CAAA,EAA2B1iB,CAAA,CAAW0iB,CAAX,CAA3B,CAAuDA,CAAvD,CAAuEF,CAPhC,CAUzC,CAGL5X,IAAKkX,CAHA,CAILa,SAAUnZ,EAAA8Y,WAJL,CAKLM,IAAKA,QAAQ,CAACna,CAAD,CAAO,CAClB,MAAOqY,EAAA7gB,eAAA,CAA6BwI,CAA7B;AAjOQsY,UAiOR,CAAP,EAA8Dc,CAAA5hB,eAAA,CAAqBwI,CAArB,CAD5C,CALf,CAnEuC,CA1JhDK,CAAA,CAAyB,CAAA,CAAzB,GAAYA,CADmC,KAE3CmZ,EAAgB,EAF2B,CAI3CnV,EAAO,EAJoC,CAK3C2U,EAAgB,IAAI1B,EAAJ,CAAY,EAAZ,CAAgB,CAAA,CAAhB,CAL2B,CAM3Ce,EAAgB,CACdzX,SAAU,CACN2E,SAAUyS,CAAA,CAAczS,CAAd,CADJ,CAENN,QAAS+S,CAAA,CAAc/S,CAAd,CAFH,CAGNiB,QAAS8R,CAAA,CAkEnB9R,QAAgB,CAAClG,CAAD,CAAOkE,CAAP,CAAoB,CAClC,MAAOe,EAAA,CAAQjF,CAAR,CAAc,CAAC,WAAD,CAAc,QAAQ,CAACoa,CAAD,CAAY,CACrD,MAAOA,EAAAhC,YAAA,CAAsBlU,CAAtB,CAD8C,CAAlC,CAAd,CAD2B,CAlEjB,CAHH,CAINhM,MAAO8f,CAAA,CAuEjB9f,QAAc,CAAC8H,CAAD,CAAOxC,CAAP,CAAY,CAAE,MAAOyH,EAAA,CAAQjF,CAAR,CAAcxG,EAAA,CAAQgE,CAAR,CAAd,CAA4B,CAAA,CAA5B,CAAT,CAvET,CAJD,CAKN2I,SAAU6R,CAAA,CAwEpB7R,QAAiB,CAACnG,CAAD,CAAO9H,CAAP,CAAc,CAC7BiM,EAAA,CAAwBnE,CAAxB,CAA8B,UAA9B,CACAqY,EAAA,CAAcrY,CAAd,CAAA,CAAsB9H,CACtBmiB,EAAA,CAAcra,CAAd,CAAA,CAAsB9H,CAHO,CAxEX,CALJ,CAMNoiB,UA6EVA,QAAkB,CAAChB,CAAD,CAAciB,CAAd,CAAuB,CAAA,IACnCC,EAAerC,CAAAhW,IAAA,CAAqBmX,CAArB,CAxFAhB,UAwFA,CADoB,CAEnCmC,EAAWD,CAAA3D,KAEf2D,EAAA3D,KAAA,CAAoB6D,QAAQ,EAAG,CAC7B,IAAIC,EAAelC,CAAAzX,OAAA,CAAwByZ,CAAxB,CAAkCD,CAAlC,CACnB,OAAO/B,EAAAzX,OAAA,CAAwBuZ,CAAxB,CAAiC,IAAjC,CAAuC,CAACK,UAAWD,CAAZ,CAAvC,CAFsB,CAJQ,CAnFzB,CADI,CAN2B,CAgB3CxC,EAAoBE,CAAA+B,UAApBjC,CACIgB,CAAA,CAAuBd,CAAvB,CAAsC,QAAQ,CAACiB,CAAD,CAAcC,CAAd,CAAsB,CAC9D9X,EAAAxK,SAAA,CAAiBsiB,CAAjB,CAAJ,EACElV,CAAA1I,KAAA,CAAU4d,CAAV,CAEF;KAAMrU,GAAA,CAAgB,MAAhB,CAAiDb,CAAAlF,KAAA,CAAU,MAAV,CAAjD,CAAN,CAJkE,CAApE,CAjBuC,CAuB3Ckb,EAAgB,EAvB2B,CAwB3C5B,EAAoB4B,CAAAD,UAApB3B,CACIU,CAAA,CAAuBkB,CAAvB,CAAsC,QAAQ,CAACf,CAAD,CAAcC,CAAd,CAAsB,CAClE,IAAIhU,EAAW4S,CAAAhW,IAAA,CAAqBmX,CAArB,CAvBJhB,UAuBI,CAAmDiB,CAAnD,CACf,OAAOd,EAAAzX,OAAA,CAAwBuE,CAAAsR,KAAxB,CAAuCtR,CAAvC,CAAiD9O,CAAjD,CAA4D6iB,CAA5D,CAF2D,CAApE,CAMRniB,EAAA,CAAQyhB,CAAA,CAAYb,CAAZ,CAAR,CAAoC,QAAQ,CAAC5a,CAAD,CAAK,CAAEsb,CAAAzX,OAAA,CAAwB7D,CAAxB,EAA8B9D,CAA9B,CAAF,CAAjD,CAEA,OAAOof,EAjCwC,CAoPjD9L,QAASA,GAAqB,EAAG,CAE/B,IAAIkO,EAAuB,CAAA,CAe3B,KAAAC,qBAAA,CAA4BC,QAAQ,EAAG,CACrCF,CAAA,CAAuB,CAAA,CADc,CA6IvC,KAAAhE,KAAA,CAAY,CAAC,SAAD,CAAY,WAAZ,CAAyB,YAAzB,CAAuC,QAAQ,CAACjH,CAAD,CAAU1B,CAAV,CAAqBM,CAArB,CAAiC,CAM1FwM,QAASA,EAAc,CAACC,CAAD,CAAO,CAC5B,IAAIrf,EAAS,IACbsf,MAAAlB,UAAAmB,KAAA1jB,KAAA,CAA0BwjB,CAA1B,CAAgC,QAAQ,CAACngB,CAAD,CAAU,CAChD,GAA2B,GAA3B,GAAID,EAAA,CAAUC,CAAV,CAAJ,CAEE,MADAc,EACO,CADEd,CACF,CAAA,CAAA,CAHuC,CAAlD,CAMA,OAAOc,EARqB,CAgC9Bwf,QAASA,EAAQ,CAAC5X,CAAD,CAAO,CACtB,GAAIA,CAAJ,CAAU,CACRA,CAAA6X,eAAA,EAEA,KAAI9K,CAvBFA,EAAAA,CAAS+K,CAAAC,QAEThkB,EAAA,CAAWgZ,CAAX,CAAJ,CACEA,CADF,CACWA,CAAA,EADX,CAEWnW,EAAA,CAAUmW,CAAV,CAAJ,EACD/M,CAGF,CAHS+M,CAAA,CAAO,CAAP,CAGT,CAAAA,CAAA,CADqB,OAAvB;AADYX,CAAA4L,iBAAAzT,CAAyBvE,CAAzBuE,CACR0T,SAAJ,CACW,CADX,CAGWjY,CAAAkY,sBAAA,EAAAC,OANN,EAQK/hB,CAAA,CAAS2W,CAAT,CARL,GASLA,CATK,CASI,CATJ,CAqBDA,EAAJ,GAcMqL,CACJ,CADcpY,CAAAkY,sBAAA,EAAAG,IACd,CAAAjM,CAAAkM,SAAA,CAAiB,CAAjB,CAAoBF,CAApB,CAA8BrL,CAA9B,CAfF,CALQ,CAAV,IAuBEX,EAAAwL,SAAA,CAAiB,CAAjB,CAAoB,CAApB,CAxBoB,CA4BxBE,QAASA,EAAM,EAAG,CAAA,IACZS,EAAO7N,CAAA6N,KAAA,EADK,CACaC,CAGxBD,EAAL,CAGK,CAAKC,CAAL,CAAWxlB,CAAAylB,eAAA,CAAwBF,CAAxB,CAAX,EAA2CX,CAAA,CAASY,CAAT,CAA3C,CAGA,CAAKA,CAAL,CAAWhB,CAAA,CAAexkB,CAAA0lB,kBAAA,CAA2BH,CAA3B,CAAf,CAAX,EAA8DX,CAAA,CAASY,CAAT,CAA9D,CAGa,KAHb,GAGID,CAHJ,EAGoBX,CAAA,CAAS,IAAT,CATzB,CAAWA,CAAA,CAAS,IAAT,CAJK,CAjElB,IAAI5kB,EAAWoZ,CAAApZ,SAmFXqkB,EAAJ,EACErM,CAAAtU,OAAA,CAAkBiiB,QAAwB,EAAG,CAAC,MAAOjO,EAAA6N,KAAA,EAAR,CAA7C,CACEK,QAA8B,CAACC,CAAD,CAASC,CAAT,CAAiB,CAEzCD,CAAJ,GAAeC,CAAf,EAAoC,EAApC,GAAyBD,CAAzB,EAEAlH,EAAA,CAAqB,QAAQ,EAAG,CAC9B3G,CAAAvU,WAAA,CAAsBqhB,CAAtB,CAD8B,CAAhC,CAJ6C,CADjD,CAWF,OAAOA,EAhGmF,CAAhF,CA9JmB,CAqnBjCrL,QAASA,GAAuB,EAAG,CACjC,IAAA4G,KAAA,CAAY,CAAC,OAAD,CAAU,UAAV,CAAsB,QAAQ,CAAC/G,CAAD,CAAQJ,CAAR,CAAkB,CAC1D,MAAOI,EAAAyM,UAAA,CACH,QAAQ,CAACpf,CAAD,CAAK,CAAE,MAAO2S,EAAA,CAAM3S,CAAN,CAAT,CADV;AAEH,QAAQ,CAACA,CAAD,CAAK,CACb,MAAOuS,EAAA,CAASvS,CAAT,CAAa,CAAb,CAAgB,CAAA,CAAhB,CADM,CAHyC,CAAhD,CADqB,CAiCnCqf,QAASA,GAAO,CAACjmB,CAAD,CAASC,CAAT,CAAmB4X,CAAnB,CAAyBc,CAAzB,CAAmC,CAsBjDuN,QAASA,EAA0B,CAACtf,CAAD,CAAK,CACtC,GAAI,CACFA,CAAAG,MAAA,CAAS,IAAT,CA/2HGN,EAAAvF,KAAA,CA+2HsBkB,SA/2HtB,CA+2HiC0E,CA/2HjC,CA+2HH,CADE,CAAJ,OAEU,CAER,GADAqf,CAAA,EACI,CAA4B,CAA5B,GAAAA,CAAJ,CACE,IAAA,CAAOC,CAAA7lB,OAAP,CAAA,CACE,GAAI,CACF6lB,CAAAC,IAAA,EAAA,EADE,CAEF,MAAOxe,CAAP,CAAU,CACVgQ,CAAAyO,MAAA,CAAWze,CAAX,CADU,CANR,CAH4B,CAwExC0e,QAASA,EAAW,CAACC,CAAD,CAAWxH,CAAX,CAAuB,CACxCyH,SAASA,GAAK,EAAG,CAChB7lB,CAAA,CAAQ8lB,CAAR,CAAiB,QAAQ,CAACC,CAAD,CAAS,CAAEA,CAAA,EAAF,CAAlC,CACAC,EAAA,CAAc5H,CAAA,CAAWyH,EAAX,CAAkBD,CAAlB,CAFE,CAAjBC,CAAD,EADyC,CAgH3CI,QAASA,EAA0B,EAAG,CACpCC,CAAA,EACAC,EAAA,EAFoC,CAetCD,QAASA,EAAU,EAAG,CAVK,CAAA,CAAA,CACzB,GAAI,CACF,CAAA,CAAOE,CAAAC,MAAP,OAAA,CADE,CAEF,MAAOpf,CAAP,CAAU,EAHa,CAAA,CAAA,IAAA,EAAA,CAazBqf,CAAA,CAAchkB,CAAA,CAAYgkB,CAAZ,CAAA,CAA2B,IAA3B,CAAkCA,CAG5ClhB,GAAA,CAAOkhB,CAAP,CAAoBC,CAApB,CAAJ,GACED,CADF,CACgBC,CADhB,CAGAA,EAAA,CAAkBD,CATE,CAYtBH,QAASA,EAAa,EAAG,CACvB,GAAIK,CAAJ,GAAuBzgB,CAAA0gB,IAAA,EAAvB,EAAqCC,CAArC,GAA0DJ,CAA1D,CAIAE,CAEA,CAFiBzgB,CAAA0gB,IAAA,EAEjB,CADAC,CACA,CADmBJ,CACnB,CAAAtmB,CAAA,CAAQ2mB,CAAR,CAA4B,QAAQ,CAACC,CAAD,CAAW,CAC7CA,CAAA,CAAS7gB,CAAA0gB,IAAA,EAAT,CAAqBH,CAArB,CAD6C,CAA/C,CAPuB,CAoFzBO,QAASA,EAAsB,CAACjlB,CAAD,CAAM,CACnC,GAAI,CACF,MAAO4F,mBAAA,CAAmB5F,CAAnB,CADL,CAEF,MAAOqF,CAAP,CAAU,CACV,MAAOrF,EADG,CAHuB,CA7TY;AAAA,IAC7CmE,EAAO,IADsC,CAE7C+gB,EAAcznB,CAAA,CAAS,CAAT,CAF+B,CAG7CuL,EAAWxL,CAAAwL,SAHkC,CAI7Cwb,EAAUhnB,CAAAgnB,QAJmC,CAK7ChI,EAAahf,CAAAgf,WALgC,CAM7C2I,EAAe3nB,CAAA2nB,aAN8B,CAO7CC,EAAkB,EAEtBjhB,EAAAkhB,OAAA,CAAc,CAAA,CAEd,KAAI1B,EAA0B,CAA9B,CACIC,EAA8B,EAGlCzf,EAAAmhB,6BAAA,CAAoC5B,CACpCvf,EAAAohB,6BAAA,CAAoCC,QAAQ,EAAG,CAAE7B,CAAA,EAAF,CAkC/Cxf,EAAAshB,gCAAA,CAAuCC,QAAQ,CAACC,CAAD,CAAW,CAIxDvnB,CAAA,CAAQ8lB,CAAR,CAAiB,QAAQ,CAACC,CAAD,CAAS,CAAEA,CAAA,EAAF,CAAlC,CAEgC,EAAhC,GAAIR,CAAJ,CACEgC,CAAA,EADF,CAGE/B,CAAAhhB,KAAA,CAAiC+iB,CAAjC,CATsD,CAlDT,KAkE7CzB,EAAU,EAlEmC,CAmE7CE,CAaJjgB,EAAAyhB,UAAA,CAAiBC,QAAQ,CAACzhB,CAAD,CAAK,CACxB1D,CAAA,CAAY0jB,CAAZ,CAAJ,EAA8BL,CAAA,CAAY,GAAZ,CAAiBvH,CAAjB,CAC9B0H,EAAAthB,KAAA,CAAawB,CAAb,CACA,OAAOA,EAHqB,CAhFmB,KAyG7CsgB,CAzG6C,CAyGhCI,CAzGgC,CA0G7CF,EAAiB5b,CAAA8c,KA1G4B,CA2G7CC,EAActoB,CAAAiE,KAAA,CAAc,MAAd,CA3G+B,CA4G7CskB,EAAiB,IAErB1B,EAAA,EACAQ,EAAA,CAAmBJ,CAsBnBvgB,EAAA0gB,IAAA,CAAWoB,QAAQ,CAACpB,CAAD,CAAMnf,CAAN,CAAe+e,CAAf,CAAsB,CAInC/jB,CAAA,CAAY+jB,CAAZ,CAAJ,GACEA,CADF,CACU,IADV,CAKIzb,EAAJ,GAAiBxL,CAAAwL,SAAjB,GAAkCA,CAAlC,CAA6CxL,CAAAwL,SAA7C,CACIwb,EAAJ,GAAgBhnB,CAAAgnB,QAAhB,GAAgCA,CAAhC,CAA0ChnB,CAAAgnB,QAA1C,CAGA,IAAIK,CAAJ,CAAS,CACP,IAAIqB;AAAYpB,CAAZoB,GAAiCzB,CAKrC,IAAIG,CAAJ,GAAuBC,CAAvB,GAAgCL,CAAArO,CAAAqO,QAAhC,EAAoD0B,CAApD,EACE,MAAO/hB,EAET,KAAIgiB,EAAWvB,CAAXuB,EAA6BC,EAAA,CAAUxB,CAAV,CAA7BuB,GAA2DC,EAAA,CAAUvB,CAAV,CAC/DD,EAAA,CAAiBC,CACjBC,EAAA,CAAmBL,CAKfD,EAAArO,CAAAqO,QAAJ,EAA0B2B,CAA1B,EAAuCD,CAAvC,EAMOC,CAGL,GAFEH,CAEF,CAFmBnB,CAEnB,EAAInf,CAAJ,CACEsD,CAAAtD,QAAA,CAAiBmf,CAAjB,CADF,CAEYsB,CAAL,EAGLnd,CAAA,CAAAA,CAAA,CAxIF7G,CAwIE,CAAwB0iB,CAxIlBziB,QAAA,CAAY,GAAZ,CAwIN,CAvIN,CAuIM,CAvIY,EAAX,GAAAD,CAAA,CAAe,EAAf,CAuIuB0iB,CAvIHwB,OAAA,CAAWlkB,CAAX,CAAmB,CAAnB,CAuIrB,CAAA6G,CAAAga,KAAA,CAAgB,CAHX,EACLha,CAAA8c,KADK,CACWjB,CAZpB,GACEL,CAAA,CAAQ9e,CAAA,CAAU,cAAV,CAA2B,WAAnC,CAAA,CAAgD+e,CAAhD,CAAuD,EAAvD,CAA2DI,CAA3D,CAGA,CAFAP,CAAA,EAEA,CAAAQ,CAAA,CAAmBJ,CAJrB,CAiBA,OAAOvgB,EAjCA,CAuCP,MAAO6hB,EAAP,EAAyBhd,CAAA8c,KAAApgB,QAAA,CAAsB,MAAtB,CAA6B,GAA7B,CApDY,CAkEzCvB,EAAAsgB,MAAA,CAAa6B,QAAQ,EAAG,CACtB,MAAO5B,EADe,CAvMyB,KA2M7CK,EAAqB,EA3MwB,CA4M7CwB,GAAgB,CAAA,CA5M6B,CA4N7C5B,EAAkB,IA8CtBxgB,EAAAqiB,YAAA,CAAmBC,QAAQ,CAACd,CAAD,CAAW,CAEpC,GAAKY,CAAAA,EAAL,CAAoB,CAMlB,GAAIpQ,CAAAqO,QAAJ,CAAsBtf,CAAA,CAAO1H,CAAP,CAAAuM,GAAA,CAAkB,UAAlB,CAA8Bsa,CAA9B,CAEtBnf,EAAA,CAAO1H,CAAP,CAAAuM,GAAA,CAAkB,YAAlB,CAAgCsa,CAAhC,CAEAkC,GAAA,CAAgB,CAAA,CAVE,CAapBxB,CAAAniB,KAAA,CAAwB+iB,CAAxB,CACA,OAAOA,EAhB6B,CAwBtCxhB,EAAAuiB,iBAAA,CAAwBnC,CAexBpgB,EAAAwiB,SAAA,CAAgBC,QAAQ,EAAG,CACzB,IAAId,EAAOC,CAAAtkB,KAAA,CAAiB,MAAjB,CACX;MAAOqkB,EAAA,CAAOA,CAAApgB,QAAA,CAAa,wBAAb,CAAuC,EAAvC,CAAP,CAAoD,EAFlC,CAQ3B,KAAImhB,GAAc,EAAlB,CACIC,EAAmB,EADvB,CAEIC,GAAa5iB,CAAAwiB,SAAA,EA8BjBxiB,EAAA6iB,QAAA,CAAeC,QAAQ,CAAChgB,CAAD,CAAO9H,CAAP,CAAc,CAAA,IAC/B+nB,CAD+B,CACJC,CADI,CACInoB,CADJ,CACOmD,CAE1C,IAAI8E,CAAJ,CACM9H,CAAJ,GAAczB,CAAd,CACEwnB,CAAAiC,OADF,CACuB5gB,kBAAA,CAAmBU,CAAnB,CADvB,CACkD,SADlD,CAC8D8f,EAD9D,CAE0B,wCAF1B,CAIM7oB,CAAA,CAASiB,CAAT,CAJN,GAKI+nB,CAOA,CAPenpB,CAACmnB,CAAAiC,OAADppB,CAAsBwI,kBAAA,CAAmBU,CAAnB,CAAtBlJ,CAAiD,GAAjDA,CAAuDwI,kBAAA,CAAmBpH,CAAnB,CAAvDpB,CACO,QADPA,CACkBgpB,EADlBhpB,QAOf,CANsD,CAMtD,CAAmB,IAAnB,CAAImpB,CAAJ,EACE7R,CAAA+R,KAAA,CAAU,UAAV,CAAuBngB,CAAvB,CACE,6DADF,CAEEigB,CAFF,CAEiB,iBAFjB,CAbN,CADF,KAoBO,CACL,GAAIhC,CAAAiC,OAAJ,GAA2BL,CAA3B,CAKE,IAJAA,CAIK,CAJc5B,CAAAiC,OAId,CAHLE,CAGK,CAHSP,CAAAjlB,MAAA,CAAuB,IAAvB,CAGT,CAFLglB,EAEK,CAFS,EAET,CAAA7nB,CAAA,CAAI,CAAT,CAAYA,CAAZ,CAAgBqoB,CAAAtpB,OAAhB,CAAoCiB,CAAA,EAApC,CACEmoB,CAEA,CAFSE,CAAA,CAAYroB,CAAZ,CAET,CADAmD,CACA;AADQglB,CAAA/kB,QAAA,CAAe,GAAf,CACR,CAAY,CAAZ,CAAID,CAAJ,GACE8E,CAIA,CAJOge,CAAA,CAAuBkC,CAAAG,UAAA,CAAiB,CAAjB,CAAoBnlB,CAApB,CAAvB,CAIP,CAAI0kB,EAAA,CAAY5f,CAAZ,CAAJ,GAA0BvJ,CAA1B,GACEmpB,EAAA,CAAY5f,CAAZ,CADF,CACsBge,CAAA,CAAuBkC,CAAAG,UAAA,CAAiBnlB,CAAjB,CAAyB,CAAzB,CAAvB,CADtB,CALF,CAWJ,OAAO0kB,GApBF,CAvB4B,CA8DrC1iB,EAAAojB,MAAA,CAAaC,QAAQ,CAACpjB,CAAD,CAAKqjB,CAAL,CAAY,CAC/B,IAAIC,CACJ/D,EAAA,EACA+D,EAAA,CAAYlL,CAAA,CAAW,QAAQ,EAAG,CAChC,OAAO4I,CAAA,CAAgBsC,CAAhB,CACPhE,EAAA,CAA2Btf,CAA3B,CAFgC,CAAtB,CAGTqjB,CAHS,EAGA,CAHA,CAIZrC,EAAA,CAAgBsC,CAAhB,CAAA,CAA6B,CAAA,CAC7B,OAAOA,EARwB,CAsBjCvjB,EAAAojB,MAAAI,OAAA,CAAoBC,QAAQ,CAACC,CAAD,CAAU,CACpC,MAAIzC,EAAA,CAAgByC,CAAhB,CAAJ,EACE,OAAOzC,CAAA,CAAgByC,CAAhB,CAGA,CAFP1C,CAAA,CAAa0C,CAAb,CAEO,CADPnE,CAAA,CAA2BpjB,CAA3B,CACO,CAAA,CAAA,CAJT,EAMO,CAAA,CAP6B,CA7aW,CAybnD0T,QAASA,GAAgB,EAAG,CAC1B,IAAA8J,KAAA,CAAY,CAAC,SAAD,CAAY,MAAZ,CAAoB,UAApB,CAAgC,WAAhC,CACR,QAAQ,CAACjH,CAAD,CAAUxB,CAAV,CAAgBc,CAAhB,CAA0B9B,CAA1B,CAAqC,CAC3C,MAAO,KAAIoP,EAAJ,CAAY5M,CAAZ,CAAqBxC,CAArB,CAAgCgB,CAAhC,CAAsCc,CAAtC,CADoC,CADrC,CADc,CAwF5BjC,QAASA,GAAqB,EAAG,CAE/B,IAAA4J,KAAA,CAAYC,QAAQ,EAAG,CAGrB+J,QAASA,EAAY,CAACC,CAAD,CAAUC,CAAV,CAAmB,CAwMtCC,QAASA,EAAO,CAACC,CAAD,CAAQ,CAClBA,CAAJ,EAAaC,CAAb,GACOC,CAAL,CAEWA,CAFX,EAEuBF,CAFvB,GAGEE,CAHF,CAGaF,CAAAG,EAHb,EACED,CADF,CACaF,CAQb,CAHAI,CAAA,CAAKJ,CAAAG,EAAL,CAAcH,CAAAK,EAAd,CAGA,CAFAD,CAAA,CAAKJ,CAAL,CAAYC,CAAZ,CAEA,CADAA,CACA,CADWD,CACX,CAAAC,CAAAE,EAAA,CAAa,IAVf,CADsB,CAmBxBC,QAASA,EAAI,CAACE,CAAD,CAAYC,CAAZ,CAAuB,CAC9BD,CAAJ;AAAiBC,CAAjB,GACMD,CACJ,GADeA,CAAAD,EACf,CAD6BE,CAC7B,EAAIA,CAAJ,GAAeA,CAAAJ,EAAf,CAA6BG,CAA7B,CAFF,CADkC,CA1NpC,GAAIT,CAAJ,GAAeW,EAAf,CACE,KAAM/qB,EAAA,CAAO,eAAP,CAAA,CAAwB,KAAxB,CAAkEoqB,CAAlE,CAAN,CAFoC,IAKlCY,EAAO,CAL2B,CAMlCC,EAAQnpB,CAAA,CAAO,EAAP,CAAWuoB,CAAX,CAAoB,CAACa,GAAId,CAAL,CAApB,CAN0B,CAOlCzf,EAAO,EAP2B,CAQlCwgB,EAAYd,CAAZc,EAAuBd,CAAAc,SAAvBA,EAA4CC,MAAAC,UARV,CASlCC,EAAU,EATwB,CAUlCd,EAAW,IAVuB,CAWlCC,EAAW,IAyCf,OAAOM,EAAA,CAAOX,CAAP,CAAP,CAAyB,CAoBvBrJ,IAAKA,QAAQ,CAACngB,CAAD,CAAMY,CAAN,CAAa,CACxB,GAAI2pB,CAAJ,CAAeC,MAAAC,UAAf,CAAiC,CAC/B,IAAIE,EAAWD,CAAA,CAAQ1qB,CAAR,CAAX2qB,GAA4BD,CAAA,CAAQ1qB,CAAR,CAA5B2qB,CAA2C,CAAC3qB,IAAKA,CAAN,CAA3C2qB,CAEJjB,EAAA,CAAQiB,CAAR,CAH+B,CAMjC,GAAI,CAAAxoB,CAAA,CAAYvB,CAAZ,CAAJ,CAQA,MAPMZ,EAOCY,GAPMmJ,EAONnJ,EAPawpB,CAAA,EAObxpB,CANPmJ,CAAA,CAAK/J,CAAL,CAMOY,CANKA,CAMLA,CAJHwpB,CAIGxpB,CAJI2pB,CAIJ3pB,EAHL,IAAAgqB,OAAA,CAAYf,CAAA7pB,IAAZ,CAGKY,CAAAA,CAfiB,CApBH,CAiDvBiK,IAAKA,QAAQ,CAAC7K,CAAD,CAAM,CACjB,GAAIuqB,CAAJ,CAAeC,MAAAC,UAAf,CAAiC,CAC/B,IAAIE,EAAWD,CAAA,CAAQ1qB,CAAR,CAEf,IAAK2qB,CAAAA,CAAL,CAAe,MAEfjB,EAAA,CAAQiB,CAAR,CAL+B,CAQjC,MAAO5gB,EAAA,CAAK/J,CAAL,CATU,CAjDI,CAwEvB4qB,OAAQA,QAAQ,CAAC5qB,CAAD,CAAM,CACpB,GAAIuqB,CAAJ,CAAeC,MAAAC,UAAf,CAAiC,CAC/B,IAAIE,EAAWD,CAAA,CAAQ1qB,CAAR,CAEf,IAAK2qB,CAAAA,CAAL,CAAe,MAEXA,EAAJ,EAAgBf,CAAhB,GAA0BA,CAA1B,CAAqCe,CAAAX,EAArC,CACIW,EAAJ,EAAgBd,CAAhB,GAA0BA,CAA1B,CAAqCc,CAAAb,EAArC,CACAC,EAAA,CAAKY,CAAAb,EAAL,CAAgBa,CAAAX,EAAhB,CAEA,QAAOU,CAAA,CAAQ1qB,CAAR,CATwB,CAYjC,OAAO+J,CAAA,CAAK/J,CAAL,CACPoqB;CAAA,EAdoB,CAxEC,CAkGvBS,UAAWA,QAAQ,EAAG,CACpB9gB,CAAA,CAAO,EACPqgB,EAAA,CAAO,CACPM,EAAA,CAAU,EACVd,EAAA,CAAWC,CAAX,CAAsB,IAJF,CAlGC,CAmHvBiB,QAASA,QAAQ,EAAG,CAGlBJ,CAAA,CADAL,CACA,CAFAtgB,CAEA,CAFO,IAGP,QAAOogB,CAAA,CAAOX,CAAP,CAJW,CAnHG,CA2IvBuB,KAAMA,QAAQ,EAAG,CACf,MAAO7pB,EAAA,CAAO,EAAP,CAAWmpB,CAAX,CAAkB,CAACD,KAAMA,CAAP,CAAlB,CADQ,CA3IM,CApDa,CAFxC,IAAID,EAAS,EA+ObZ,EAAAwB,KAAA,CAAoBC,QAAQ,EAAG,CAC7B,IAAID,EAAO,EACXlrB,EAAA,CAAQsqB,CAAR,CAAgB,QAAQ,CAACrI,CAAD,CAAQ0H,CAAR,CAAiB,CACvCuB,CAAA,CAAKvB,CAAL,CAAA,CAAgB1H,CAAAiJ,KAAA,EADuB,CAAzC,CAGA,OAAOA,EALsB,CAmB/BxB,EAAA1e,IAAA,CAAmBogB,QAAQ,CAACzB,CAAD,CAAU,CACnC,MAAOW,EAAA,CAAOX,CAAP,CAD4B,CAKrC,OAAOD,EAxQc,CAFQ,CAyTjCxR,QAASA,GAAsB,EAAG,CAChC,IAAAwH,KAAA,CAAY,CAAC,eAAD,CAAkB,QAAQ,CAAC7J,CAAD,CAAgB,CACpD,MAAOA,EAAA,CAAc,WAAd,CAD6C,CAA1C,CADoB,CA6sBlC7F,QAASA,GAAgB,CAACvG,CAAD,CAAW4hB,CAAX,CAAkC,CAazDC,QAASA,EAAoB,CAACvhB,CAAD,CAAQwhB,CAAR,CAAuB,CAClD,IAAIC,EAAe,oCAAnB,CAEIC,EAAW,EAEfzrB,EAAA,CAAQ+J,CAAR,CAAe,QAAQ,CAAC2hB,CAAD,CAAaC,CAAb,CAAwB,CAC7C,IAAI9mB,EAAQ6mB,CAAA7mB,MAAA,CAAiB2mB,CAAjB,CAEZ,IAAK3mB,CAAAA,CAAL,CACE,KAAM+mB,GAAA,CAAe,MAAf,CAGFL,CAHE,CAGaI,CAHb,CAGwBD,CAHxB,CAAN,CAMFD,CAAA,CAASE,CAAT,CAAA,CAAsB,CACpBE,KAAMhnB,CAAA,CAAM,CAAN,CAAA,CAAS,CAAT,CADc,CAEpBinB,WAAyB,GAAzBA;AAAYjnB,CAAA,CAAM,CAAN,CAFQ,CAGpBknB,SAAuB,GAAvBA,GAAUlnB,CAAA,CAAM,CAAN,CAHU,CAIpBmnB,SAAUnnB,CAAA,CAAM,CAAN,CAAVmnB,EAAsBL,CAJF,CAVuB,CAA/C,CAkBA,OAAOF,EAvB2C,CAbK,IACrDQ,EAAgB,EADqC,CAGrDC,EAA2B,qCAH0B,CAIrDC,EAAyB,6BAJ4B,CAKrDC,EAAuB7oB,EAAA,CAAQ,2BAAR,CAL8B,CAMrD8oB,EAAwB,6BAN6B,CAWrDC,EAA4B,yBA2C/B,KAAAnd,UAAA,CAAiBod,QAASC,EAAiB,CAAC3jB,CAAD,CAAO4jB,CAAP,CAAyB,CACnEzf,EAAA,CAAwBnE,CAAxB,CAA8B,WAA9B,CACI/I,EAAA,CAAS+I,CAAT,CAAJ,EACE6D,EAAA,CAAU+f,CAAV,CAA4B,kBAA5B,CA8BA,CA7BKR,CAAA5rB,eAAA,CAA6BwI,CAA7B,CA6BL,GA5BEojB,CAAA,CAAcpjB,CAAd,CACA,CADsB,EACtB,CAAAY,CAAAqE,QAAA,CAAiBjF,CAAjB,CA1DO6jB,WA0DP,CAAgC,CAAC,WAAD,CAAc,mBAAd,CAC9B,QAAQ,CAACzJ,CAAD,CAAY9M,CAAZ,CAA+B,CACrC,IAAIwW,EAAa,EACjB3sB,EAAA,CAAQisB,CAAA,CAAcpjB,CAAd,CAAR,CAA6B,QAAQ,CAAC4jB,CAAD,CAAmB1oB,CAAnB,CAA0B,CAC7D,GAAI,CACF,IAAIoL,EAAY8T,CAAApZ,OAAA,CAAiB4iB,CAAjB,CACZrsB,EAAA,CAAW+O,CAAX,CAAJ,CACEA,CADF,CACc,CAAEnF,QAAS3H,EAAA,CAAQ8M,CAAR,CAAX,CADd,CAEYnF,CAAAmF,CAAAnF,QAFZ,EAEiCmF,CAAA+a,KAFjC;CAGE/a,CAAAnF,QAHF,CAGsB3H,EAAA,CAAQ8M,CAAA+a,KAAR,CAHtB,CAKA/a,EAAAyd,SAAA,CAAqBzd,CAAAyd,SAArB,EAA2C,CAC3Czd,EAAApL,MAAA,CAAkBA,CAClBoL,EAAAtG,KAAA,CAAiBsG,CAAAtG,KAAjB,EAAmCA,CACnCsG,EAAA0d,QAAA,CAAoB1d,CAAA0d,QAApB,EAA0C1d,CAAArD,WAA1C,EAAkEqD,CAAAtG,KAClEsG,EAAA2d,SAAA,CAAqB3d,CAAA2d,SAArB,EAA2C,IACvCtqB,EAAA,CAAS2M,CAAApF,MAAT,CAAJ,GACEoF,CAAA4d,kBADF,CACgCzB,CAAA,CAAqBnc,CAAApF,MAArB,CAAsCoF,CAAAtG,KAAtC,CADhC,CAGA8jB,EAAAnoB,KAAA,CAAgB2K,CAAhB,CAfE,CAgBF,MAAOlI,CAAP,CAAU,CACVkP,CAAA,CAAkBlP,CAAlB,CADU,CAjBiD,CAA/D,CAqBA,OAAO0lB,EAvB8B,CADT,CAAhC,CA2BF,EAAAV,CAAA,CAAcpjB,CAAd,CAAArE,KAAA,CAAyBioB,CAAzB,CA/BF,EAiCEzsB,CAAA,CAAQ6I,CAAR,CAAchI,EAAA,CAAc2rB,CAAd,CAAd,CAEF,OAAO,KArC4D,CA6DrE,KAAAQ,2BAAA,CAAkCC,QAAQ,CAACC,CAAD,CAAS,CACjD,MAAI3qB,EAAA,CAAU2qB,CAAV,CAAJ,EACE7B,CAAA2B,2BAAA,CAAiDE,CAAjD,CACO,CAAA,IAFT,EAIS7B,CAAA2B,2BAAA,EALwC,CA8BnD,KAAAG,4BAAA,CAAmCC,QAAQ,CAACF,CAAD,CAAS,CAClD,MAAI3qB,EAAA,CAAU2qB,CAAV,CAAJ,EACE7B,CAAA8B,4BAAA,CAAkDD,CAAlD,CACO,CAAA,IAFT,EAIS7B,CAAA8B,4BAAA,EALyC,CA+BpD;IAAIzjB,EAAmB,CAAA,CACvB,KAAAA,iBAAA,CAAwB2jB,QAAQ,CAACC,CAAD,CAAU,CACxC,MAAI/qB,EAAA,CAAU+qB,CAAV,CAAJ,EACE5jB,CACO,CADY4jB,CACZ,CAAA,IAFT,EAIO5jB,CALiC,CAQ1C,KAAAgW,KAAA,CAAY,CACF,WADE,CACW,cADX,CAC2B,mBAD3B,CACgD,kBADhD,CACoE,QADpE,CAEF,aAFE,CAEa,YAFb,CAE2B,WAF3B,CAEwC,MAFxC,CAEgD,UAFhD,CAE4D,eAF5D,CAGV,QAAQ,CAACuD,CAAD,CAAc1M,CAAd,CAA8BJ,CAA9B,CAAmDgC,CAAnD,CAAuEhB,CAAvE,CACCpB,CADD,CACgBsB,CADhB,CAC8BpB,CAD9B,CAC2C0B,CAD3C,CACmDlC,CADnD,CAC+D3F,CAD/D,CAC8E,CA2OtFyd,QAASA,EAAY,CAACC,CAAD,CAAWC,CAAX,CAAsB,CACzC,GAAI,CACFD,CAAA1N,SAAA,CAAkB2N,CAAlB,CADE,CAEF,MAAOxmB,CAAP,CAAU,EAH6B,CAgD3C+C,QAASA,EAAO,CAAC0jB,CAAD,CAAgBC,CAAhB,CAA8BC,CAA9B,CAA2CC,CAA3C,CACIC,CADJ,CAC4B,CACpCJ,CAAN,WAA+B5mB,EAA/B,GAGE4mB,CAHF,CAGkB5mB,CAAA,CAAO4mB,CAAP,CAHlB,CAOA1tB,EAAA,CAAQ0tB,CAAR,CAAuB,QAAQ,CAACxqB,CAAD,CAAOa,CAAP,CAAc,CACvCb,CAAAtD,SAAJ,EAAqByH,EAArB,EAAuCnE,CAAA6qB,UAAAlpB,MAAA,CAAqB,KAArB,CAAvC,GACE6oB,CAAA,CAAc3pB,CAAd,CADF,CACyB+C,CAAA,CAAO5D,CAAP,CAAAgX,KAAA,CAAkB,eAAlB,CAAAnY,OAAA,EAAA,CAA4C,CAA5C,CADzB,CAD2C,CAA7C,CAKA,KAAIisB,EACIC,CAAA,CAAaP,CAAb,CAA4BC,CAA5B,CAA0CD,CAA1C,CACaE,CADb,CAC0BC,CAD1B,CAC2CC,CAD3C,CAER9jB,EAAAkkB,gBAAA,CAAwBR,CAAxB,CACA;IAAIS,EAAY,IAChB,OAAOC,SAAqB,CAACrkB,CAAD,CAAQskB,CAAR,CAAwBzE,CAAxB,CAAiC,CAC3Dld,EAAA,CAAU3C,CAAV,CAAiB,OAAjB,CAEA6f,EAAA,CAAUA,CAAV,EAAqB,EAHsC,KAIvD0E,EAA0B1E,CAAA0E,wBAJ6B,CAKzDC,EAAwB3E,CAAA2E,sBACxBC,EAAAA,CAAsB5E,CAAA4E,oBAMpBF,EAAJ,EAA+BA,CAAAG,kBAA/B,GACEH,CADF,CAC4BA,CAAAG,kBAD5B,CAIKN,EAAL,GAyCA,CAzCA,CAsCF,CADIjrB,CACJ,CArCgDsrB,CAqChD,EArCgDA,CAoCpB,CAAc,CAAd,CAC5B,EAG6B,eAApB,GAAA9qB,EAAA,CAAUR,CAAV,CAAA,EAAuCA,CAAAP,SAAA,EAAAkC,MAAA,CAAsB,KAAtB,CAAvC,CAAsE,KAAtE,CAA8E,MAHvF,CACS,MAvCP,CAUE6pB,EAAA,CANgB,MAAlB,GAAIP,CAAJ,CAMcrnB,CAAA,CACV6nB,EAAA,CAAaR,CAAb,CAAwBrnB,CAAA,CAAO,OAAP,CAAAK,OAAA,CAAuBumB,CAAvB,CAAAtmB,KAAA,EAAxB,CADU,CANd,CASWinB,CAAJ,CAGOziB,EAAA7E,MAAAzG,KAAA,CAA2BotB,CAA3B,CAHP,CAKOA,CAGd,IAAIa,CAAJ,CACE,IAASK,IAAAA,CAAT,GAA2BL,EAA3B,CACEG,CAAAxkB,KAAA,CAAe,GAAf,CAAqB0kB,CAArB,CAAsC,YAAtC,CAAoDL,CAAA,CAAsBK,CAAtB,CAAAhM,SAApD,CAIJ5Y,EAAA6kB,eAAA,CAAuBH,CAAvB,CAAkC3kB,CAAlC,CAEIskB,EAAJ,EAAoBA,CAAA,CAAeK,CAAf,CAA0B3kB,CAA1B,CAChBikB,EAAJ,EAAqBA,CAAA,CAAgBjkB,CAAhB,CAAuB2kB,CAAvB,CAAkCA,CAAlC,CAA6CJ,CAA7C,CACrB,OAAOI,EA/CoD,CAlBnB,CA8F5CT,QAASA,EAAY,CAACa,CAAD,CAAWnB,CAAX,CAAyBoB,CAAzB,CAAuCnB,CAAvC,CAAoDC,CAApD,CACGC,CADH,CAC2B,CA0C9CE,QAASA,EAAe,CAACjkB,CAAD;AAAQ+kB,CAAR,CAAkBC,CAAlB,CAAgCT,CAAhC,CAAyD,CAAA,IAC/DU,CAD+D,CAClD9rB,CADkD,CAC5C+rB,CAD4C,CAChCruB,CADgC,CAC7BW,CAD6B,CACpB2tB,CADoB,CAE3EC,CAGJ,IAAIC,CAAJ,CAOE,IAHAD,CAGK,CAHgBpL,KAAJ,CADI+K,CAAAnvB,OACJ,CAGZ,CAAAiB,CAAA,CAAI,CAAT,CAAYA,CAAZ,CAAgByuB,CAAA1vB,OAAhB,CAAgCiB,CAAhC,EAAmC,CAAnC,CACE0uB,CACA,CADMD,CAAA,CAAQzuB,CAAR,CACN,CAAAuuB,CAAA,CAAeG,CAAf,CAAA,CAAsBR,CAAA,CAASQ,CAAT,CAT1B,KAYEH,EAAA,CAAiBL,CAGdluB,EAAA,CAAI,CAAT,KAAYW,CAAZ,CAAiB8tB,CAAA1vB,OAAjB,CAAiCiB,CAAjC,CAAqCW,CAArC,CAAA,CACE2B,CAIA,CAJOisB,CAAA,CAAeE,CAAA,CAAQzuB,CAAA,EAAR,CAAf,CAIP,CAHA2uB,CAGA,CAHaF,CAAA,CAAQzuB,CAAA,EAAR,CAGb,CAFAouB,CAEA,CAFcK,CAAA,CAAQzuB,CAAA,EAAR,CAEd,CAAI2uB,CAAJ,EACMA,CAAAxlB,MAAJ,EACEklB,CACA,CADallB,CAAAylB,KAAA,EACb,CAAAxlB,CAAA6kB,eAAA,CAAuB/nB,CAAA,CAAO5D,CAAP,CAAvB,CAAqC+rB,CAArC,CAFF,EAIEA,CAJF,CAIellB,CAkBf,CAdEmlB,CAcF,CAfIK,CAAAE,wBAAJ,CAC2BC,CAAA,CACrB3lB,CADqB,CACdwlB,CAAAI,WADc,CACSrB,CADT,CAErBiB,CAAAK,+BAFqB,CAD3B,CAKYC,CAAAN,CAAAM,sBAAL,EAAyCvB,CAAzC,CACoBA,CADpB,CAGKA,CAAAA,CAAL,EAAgCX,CAAhC,CACoB+B,CAAA,CAAwB3lB,CAAxB,CAA+B4jB,CAA/B,CADpB,CAIoB,IAG3B,CAAA4B,CAAA,CAAWP,CAAX,CAAwBC,CAAxB,CAAoC/rB,CAApC,CAA0C6rB,CAA1C,CAAwDG,CAAxD,CAvBF,EAyBWF,CAzBX,EA0BEA,CAAA,CAAYjlB,CAAZ,CAAmB7G,CAAAsX,WAAnB,CAAoClb,CAApC,CAA+CgvB,CAA/C,CAnD2E,CAtCjF,IAJ8C,IAC1Ce,EAAU,EADgC,CAE1CS,CAF0C,CAEnCnD,CAFmC,CAEXnS,CAFW,CAEcuV,CAFd,CAE2BX,CAF3B,CAIrCxuB,EAAI,CAAb,CAAgBA,CAAhB,CAAoBkuB,CAAAnvB,OAApB,CAAqCiB,CAAA,EAArC,CAA0C,CACxCkvB,CAAA,CAAQ,IAAIE,EAGZrD,EAAA,CAAasD,CAAA,CAAkBnB,CAAA,CAASluB,CAAT,CAAlB,CAA+B,EAA/B,CAAmCkvB,CAAnC,CAAgD,CAAN,GAAAlvB,CAAA,CAAUgtB,CAAV,CAAwBtuB,CAAlE,CACmBuuB,CADnB,CAQb,EALA0B,CAKA,CALc5C,CAAAhtB,OAAD,CACPuwB,EAAA,CAAsBvD,CAAtB,CAAkCmC,CAAA,CAASluB,CAAT,CAAlC,CAA+CkvB,CAA/C,CAAsDnC,CAAtD,CAAoEoB,CAApE,CACwB,IADxB,CAC8B,EAD9B,CACkC,EADlC,CACsCjB,CADtC,CADO,CAGP,IAEN;AAAkByB,CAAAxlB,MAAlB,EACEC,CAAAkkB,gBAAA,CAAwB4B,CAAAK,UAAxB,CAGFnB,EAAA,CAAeO,CAAD,EAAeA,CAAAa,SAAf,EACE,EAAA5V,CAAA,CAAasU,CAAA,CAASluB,CAAT,CAAA4Z,WAAb,CADF,EAEC7a,CAAA6a,CAAA7a,OAFD,CAGR,IAHQ,CAIRsuB,CAAA,CAAazT,CAAb,CACG+U,CAAA,EACEA,CAAAE,wBADF,EACwC,CAACF,CAAAM,sBADzC,GAEON,CAAAI,WAFP,CAEgChC,CAHnC,CAKN,IAAI4B,CAAJ,EAAkBP,CAAlB,CACEK,CAAA7qB,KAAA,CAAa5D,CAAb,CAAgB2uB,CAAhB,CAA4BP,CAA5B,CAEA,CADAe,CACA,CADc,CAAA,CACd,CAAAX,CAAA,CAAkBA,CAAlB,EAAqCG,CAIvCzB,EAAA,CAAyB,IAhCe,CAoC1C,MAAOiC,EAAA,CAAc/B,CAAd,CAAgC,IAxCO,CAmGhD0B,QAASA,EAAuB,CAAC3lB,CAAD,CAAQ4jB,CAAR,CAAsB0C,CAAtB,CAAiDC,CAAjD,CAAsE,CAgBpG,MAdwBC,SAAQ,CAACC,CAAD,CAAmBC,CAAnB,CAA4BC,CAA5B,CAAyClC,CAAzC,CAA8DmC,CAA9D,CAA+E,CAExGH,CAAL,GACEA,CACA,CADmBzmB,CAAAylB,KAAA,CAAW,CAAA,CAAX,CAAkBmB,CAAlB,CACnB,CAAAH,CAAAI,cAAA,CAAiC,CAAA,CAFnC,CAKA,OAAOjD,EAAA,CAAa6C,CAAb,CAA+BC,CAA/B,CAAwC,CAC7CnC,wBAAyB+B,CADoB,CAE7C9B,sBAAuBmC,CAFsB,CAG7ClC,oBAAqBA,CAHwB,CAAxC,CAPsG,CAFX,CA6BtGyB,QAASA,EAAiB,CAAC/sB,CAAD,CAAOypB,CAAP,CAAmBmD,CAAnB,CAA0BlC,CAA1B,CAAuCC,CAAvC,CAAwD,CAAA,IAE5EgD,EAAWf,CAAAgB,MAFiE,CAG5EjsB,CAGJ,QALe3B,CAAAtD,SAKf,EACE,KAAKC,EAAL,CAEEkxB,EAAA,CAAapE,CAAb,CACIqE,EAAA,CAAmBttB,EAAA,CAAUR,CAAV,CAAnB,CADJ,CACyC,GADzC,CAC8C0qB,CAD9C,CAC2DC,CAD3D,CAIA,KANF,IAMWxqB,CANX;AAM0CtC,CAN1C,CAMiDkwB,CANjD,CAM2DC,EAAShuB,CAAAiuB,WANpE,CAOW1vB,EAAI,CAPf,CAOkBC,EAAKwvB,CAALxvB,EAAewvB,CAAAvxB,OAD/B,CAC8C8B,CAD9C,CACkDC,CADlD,CACsDD,CAAA,EADtD,CAC2D,CACzD,IAAI2vB,EAAgB,CAAA,CAApB,CACIC,EAAc,CAAA,CAElBhuB,EAAA,CAAO6tB,CAAA,CAAOzvB,CAAP,CACPoH,EAAA,CAAOxF,CAAAwF,KACP9H,EAAA,CAAQ8Z,CAAA,CAAKxX,CAAAtC,MAAL,CAGRuwB,EAAA,CAAaN,EAAA,CAAmBnoB,CAAnB,CACb,IAAIooB,CAAJ,CAAeM,CAAAlnB,KAAA,CAAqBinB,CAArB,CAAf,CACEzoB,CAAA,CAAOA,CAAAvB,QAAA,CAAakqB,EAAb,CAA4B,EAA5B,CAAAvJ,OAAA,CACG,CADH,CAAA3gB,QAAA,CACc,OADd,CACuB,QAAQ,CAACzC,CAAD,CAAQuG,CAAR,CAAgB,CAClD,MAAOA,EAAAiO,YAAA,EAD2C,CAD/C,CAMT,KAAIoY,EAAiBH,CAAAhqB,QAAA,CAAmB,cAAnB,CAAmC,EAAnC,CACjBoqB,EAAA,CAAwBD,CAAxB,CAAJ,EACMH,CADN,GACqBG,CADrB,CACsC,OADtC,GAEIL,CAEA,CAFgBvoB,CAEhB,CADAwoB,CACA,CADcxoB,CAAAof,OAAA,CAAY,CAAZ,CAAepf,CAAAlJ,OAAf,CAA6B,CAA7B,CACd,CADgD,KAChD,CAAAkJ,CAAA,CAAOA,CAAAof,OAAA,CAAY,CAAZ,CAAepf,CAAAlJ,OAAf,CAA6B,CAA7B,CAJX,CAQAgyB,EAAA,CAAQX,EAAA,CAAmBnoB,CAAAyC,YAAA,EAAnB,CACRulB,EAAA,CAASc,CAAT,CAAA,CAAkB9oB,CAClB,IAAIooB,CAAJ,EAAiB,CAAAnB,CAAAzvB,eAAA,CAAqBsxB,CAArB,CAAjB,CACI7B,CAAA,CAAM6B,CAAN,CACA,CADe5wB,CACf,CAAIsd,EAAA,CAAmBnb,CAAnB,CAAyByuB,CAAzB,CAAJ,GACE7B,CAAA,CAAM6B,CAAN,CADF,CACiB,CAAA,CADjB,CAIJC,GAAA,CAA4B1uB,CAA5B,CAAkCypB,CAAlC,CAA8C5rB,CAA9C,CAAqD4wB,CAArD,CAA4DV,CAA5D,CACAF,GAAA,CAAapE,CAAb,CAAyBgF,CAAzB,CAAgC,GAAhC,CAAqC/D,CAArC,CAAkDC,CAAlD,CAAmEuD,CAAnE,CACcC,CADd,CAnCyD,CAwC3D5D,CAAA,CAAYvqB,CAAAuqB,UACRjrB,EAAA,CAASirB,CAAT,CAAJ,GAEIA,CAFJ,CAEgBA,CAAAoE,QAFhB,CAIA,IAAI/xB,CAAA,CAAS2tB,CAAT,CAAJ,EAAyC,EAAzC,GAA2BA,CAA3B,CACE,IAAA,CAAO5oB,CAAP,CAAesnB,CAAAlS,KAAA,CAA4BwT,CAA5B,CAAf,CAAA,CACEkE,CAIA,CAJQX,EAAA,CAAmBnsB,CAAA,CAAM,CAAN,CAAnB,CAIR;AAHIksB,EAAA,CAAapE,CAAb,CAAyBgF,CAAzB,CAAgC,GAAhC,CAAqC/D,CAArC,CAAkDC,CAAlD,CAGJ,GAFEiC,CAAA,CAAM6B,CAAN,CAEF,CAFiB9W,CAAA,CAAKhW,CAAA,CAAM,CAAN,CAAL,CAEjB,EAAA4oB,CAAA,CAAYA,CAAAxF,OAAA,CAAiBpjB,CAAAd,MAAjB,CAA+Bc,CAAA,CAAM,CAAN,CAAAlF,OAA/B,CAGhB,MACF,MAAK0H,EAAL,CACEyqB,EAAA,CAA4BnF,CAA5B,CAAwCzpB,CAAA6qB,UAAxC,CACA,MACF,MA56KgBgE,CA46KhB,CACE,GAAI,CAEF,GADAltB,CACA,CADQqnB,CAAAjS,KAAA,CAA8B/W,CAAA6qB,UAA9B,CACR,CACE4D,CACA,CADQX,EAAA,CAAmBnsB,CAAA,CAAM,CAAN,CAAnB,CACR,CAAIksB,EAAA,CAAapE,CAAb,CAAyBgF,CAAzB,CAAgC,GAAhC,CAAqC/D,CAArC,CAAkDC,CAAlD,CAAJ,GACEiC,CAAA,CAAM6B,CAAN,CADF,CACiB9W,CAAA,CAAKhW,CAAA,CAAM,CAAN,CAAL,CADjB,CAJA,CAQF,MAAOoC,CAAP,CAAU,EA3EhB,CAmFA0lB,CAAAhsB,KAAA,CAAgBqxB,EAAhB,CACA,OAAOrF,EA1FyE,CAqGlFsF,QAASA,GAAS,CAAC/uB,CAAD,CAAOgvB,CAAP,CAAkBC,CAAlB,CAA2B,CAC3C,IAAI5kB,EAAQ,EAAZ,CACI6kB,EAAQ,CACZ,IAAIF,CAAJ,EAAiBhvB,CAAA4F,aAAjB,EAAsC5F,CAAA4F,aAAA,CAAkBopB,CAAlB,CAAtC,EACE,EAAG,CACD,GAAKhvB,CAAAA,CAAL,CACE,KAAM0oB,GAAA,CAAe,SAAf,CAEIsG,CAFJ,CAEeC,CAFf,CAAN,CAIEjvB,CAAAtD,SAAJ,EAAqBC,EAArB,GACMqD,CAAA4F,aAAA,CAAkBopB,CAAlB,CACJ,EADkCE,CAAA,EAClC,CAAIlvB,CAAA4F,aAAA,CAAkBqpB,CAAlB,CAAJ,EAAgCC,CAAA,EAFlC,CAIA7kB,EAAA/I,KAAA,CAAWtB,CAAX,CACAA,EAAA,CAAOA,CAAAwK,YAXN,CAAH,MAYiB,CAZjB,CAYS0kB,CAZT,CADF,KAeE7kB,EAAA/I,KAAA,CAAWtB,CAAX,CAGF,OAAO4D,EAAA,CAAOyG,CAAP,CArBoC,CAgC7C8kB,QAASA,EAA0B,CAACC,CAAD,CAASJ,CAAT,CAAoBC,CAApB,CAA6B,CAC9D,MAAO,SAAQ,CAACpoB,CAAD,CAAQpG,CAAR,CAAiBmsB,CAAjB,CAAwBY,CAAxB,CAAqC/C,CAArC,CAAmD,CAChEhqB,CAAA,CAAUsuB,EAAA,CAAUtuB,CAAA,CAAQ,CAAR,CAAV;AAAsBuuB,CAAtB,CAAiCC,CAAjC,CACV,OAAOG,EAAA,CAAOvoB,CAAP,CAAcpG,CAAd,CAAuBmsB,CAAvB,CAA8BY,CAA9B,CAA2C/C,CAA3C,CAFyD,CADJ,CA8BhEuC,QAASA,GAAqB,CAACvD,CAAD,CAAa4F,CAAb,CAA0BC,CAA1B,CAAyC7E,CAAzC,CACC8E,CADD,CACeC,CADf,CACyCC,CADzC,CACqDC,CADrD,CAEC9E,CAFD,CAEyB,CAiNrD+E,QAASA,EAAU,CAACC,CAAD,CAAMC,CAAN,CAAYb,CAAZ,CAAuBC,CAAvB,CAAgC,CACjD,GAAIW,CAAJ,CAAS,CACHZ,CAAJ,GAAeY,CAAf,CAAqBT,CAAA,CAA2BS,CAA3B,CAAgCZ,CAAhC,CAA2CC,CAA3C,CAArB,CACAW,EAAAjG,QAAA,CAAc1d,CAAA0d,QACdiG,EAAAvH,cAAA,CAAoBA,EACpB,IAAIyH,CAAJ,GAAiC7jB,CAAjC,EAA8CA,CAAA8jB,eAA9C,CACEH,CAAA,CAAMI,CAAA,CAAmBJ,CAAnB,CAAwB,CAACjnB,aAAc,CAAA,CAAf,CAAxB,CAER8mB,EAAAnuB,KAAA,CAAgBsuB,CAAhB,CAPO,CAST,GAAIC,CAAJ,CAAU,CACJb,CAAJ,GAAea,CAAf,CAAsBV,CAAA,CAA2BU,CAA3B,CAAiCb,CAAjC,CAA4CC,CAA5C,CAAtB,CACAY,EAAAlG,QAAA,CAAe1d,CAAA0d,QACfkG,EAAAxH,cAAA,CAAqBA,EACrB,IAAIyH,CAAJ,GAAiC7jB,CAAjC,EAA8CA,CAAA8jB,eAA9C,CACEF,CAAA,CAAOG,CAAA,CAAmBH,CAAnB,CAAyB,CAAClnB,aAAc,CAAA,CAAf,CAAzB,CAET+mB,EAAApuB,KAAA,CAAiBuuB,CAAjB,CAPQ,CAVuC,CAsBnDI,QAASA,EAAc,CAAC5H,CAAD,CAAgBsB,CAAhB,CAAyBW,CAAzB,CAAmC4F,CAAnC,CAAuD,CAAA,IACxEryB,CADwE,CACjEsyB,EAAkB,MAD+C,CACvCtH,EAAW,CAAA,CAD4B,CAExEuH,EAAiB9F,CAFuD,CAGxE3oB,CACJ,IAAI/E,CAAA,CAAS+sB,CAAT,CAAJ,CAAuB,CACrBhoB,CAAA,CAAQgoB,CAAAhoB,MAAA,CAAcwnB,CAAd,CACRQ,EAAA,CAAUA,CAAA3D,UAAA,CAAkBrkB,CAAA,CAAM,CAAN,CAAAlF,OAAlB,CAENkF,EAAA,CAAM,CAAN,CAAJ,GACMA,CAAA,CAAM,CAAN,CAAJ,CAAcA,CAAA,CAAM,CAAN,CAAd,CAAyB,IAAzB,CACKA,CAAA,CAAM,CAAN,CADL,CACgBA,CAAA,CAAM,CAAN,CAFlB,CAIiB,IAAjB,GAAIA,CAAA,CAAM,CAAN,CAAJ,CACEwuB,CADF,CACoB,eADpB,CAEwB,IAFxB,GAEWxuB,CAAA,CAAM,CAAN,CAFX,GAGEwuB,CACA,CADkB,eAClB;AAAAC,CAAA,CAAiB9F,CAAAzrB,OAAA,EAJnB,CAMiB,IAAjB,GAAI8C,CAAA,CAAM,CAAN,CAAJ,GACEknB,CADF,CACa,CAAA,CADb,CAIAhrB,EAAA,CAAQ,IAEJqyB,EAAJ,EAA8C,MAA9C,GAA0BC,CAA1B,GACMtyB,CADN,CACcqyB,CAAA,CAAmBvG,CAAnB,CADd,IAEI9rB,CAFJ,CAEYA,CAAA6hB,SAFZ,CAKA7hB,EAAA,CAAQA,CAAR,EAAiBuyB,CAAA,CAAeD,CAAf,CAAA,CAAgC,GAAhC,CAAsCxG,CAAtC,CAAgD,YAAhD,CAEjB,IAAK9rB,CAAAA,CAAL,EAAegrB,CAAAA,CAAf,CACE,KAAMH,GAAA,CAAe,OAAf,CAEFiB,CAFE,CAEOtB,CAFP,CAAN,CAIF,MAAOxqB,EAAP,EAAgB,IAhCK,CAiCZhB,CAAA,CAAQ8sB,CAAR,CAAJ,GACL9rB,CACA,CADQ,EACR,CAAAf,CAAA,CAAQ6sB,CAAR,CAAiB,QAAQ,CAACA,CAAD,CAAU,CACjC9rB,CAAAyD,KAAA,CAAW2uB,CAAA,CAAe5H,CAAf,CAA8BsB,CAA9B,CAAuCW,CAAvC,CAAiD4F,CAAjD,CAAX,CADiC,CAAnC,CAFK,CAMP,OAAOryB,EA3CqE,CA+C9EwuB,QAASA,EAAU,CAACP,CAAD,CAAcjlB,CAAd,CAAqBwpB,CAArB,CAA+BxE,CAA/B,CAA6CwB,CAA7C,CAAgE,CAqLjFiD,QAASA,EAA0B,CAACzpB,CAAD,CAAQ0pB,CAAR,CAAuBjF,CAAvB,CAA4C,CAC7E,IAAID,CAGC1rB,GAAA,CAAQkH,CAAR,CAAL,GACEykB,CAEA,CAFsBiF,CAEtB,CADAA,CACA,CADgB1pB,CAChB,CAAAA,CAAA,CAAQzK,CAHV,CAMIo0B,EAAJ,GACEnF,CADF,CAC0B6E,CAD1B,CAGK5E,EAAL,GACEA,CADF,CACwBkF,CAAA,CAAgClG,CAAAzrB,OAAA,EAAhC,CAAoDyrB,CAD5E,CAGA,OAAO+C,EAAA,CAAkBxmB,CAAlB,CAAyB0pB,CAAzB,CAAwClF,CAAxC,CAA+DC,CAA/D,CAAoFmF,EAApF,CAhBsE,CArLE,IAC1EpyB,CAD0E,CACtE+wB,CADsE,CAC9DxmB,CAD8D,CAClDD,CADkD,CACpCunB,CADoC,CAChBzF,EADgB,CACFH,CADE,CAE7EsC,CAEAyC,EAAJ,GAAoBgB,CAApB,EACEzD,CACA,CADQ0C,CACR,CAAAhF,CAAA,CAAWgF,CAAArC,UAFb,GAIE3C,CACA,CADW1mB,CAAA,CAAOysB,CAAP,CACX,CAAAzD,CAAA,CAAQ,IAAIE,EAAJ,CAAexC,CAAf,CAAyBgF,CAAzB,CALV,CAQIQ,EAAJ,GACEnnB,CADF,CACiB9B,CAAAylB,KAAA,CAAW,CAAA,CAAX,CADjB,CAIIe,EAAJ,GAGE5C,EACA,CADe6F,CACf,CAAA7F,EAAAc,kBAAA,CAAiC8B,CAJnC,CAOIqD,EAAJ,GAEElD,CAEA,CAFc,EAEd,CADA0C,CACA,CADqB,EACrB,CAAApzB,CAAA,CAAQ4zB,CAAR,CAA8B,QAAQ,CAACzkB,CAAD,CAAY,CAAA,IAC5CqT,EAAS,CACXqR,OAAQ1kB,CAAA;AAAc6jB,CAAd,EAA0C7jB,CAAA8jB,eAA1C,CAAqEpnB,CAArE,CAAoF9B,CADjF,CAEXyjB,SAAUA,CAFC,CAGXsG,OAAQhE,CAHG,CAIXiE,YAAapG,EAJF,CAOb7hB,EAAA,CAAaqD,CAAArD,WACK,IAAlB,EAAIA,CAAJ,GACEA,CADF,CACegkB,CAAA,CAAM3gB,CAAAtG,KAAN,CADf,CAIAmrB,EAAA,CAAqBje,CAAA,CAAYjK,CAAZ,CAAwB0W,CAAxB,CAAgC,CAAA,CAAhC,CAAsCrT,CAAA8kB,aAAtC,CAOrBb,EAAA,CAAmBjkB,CAAAtG,KAAnB,CAAA,CAAqCmrB,CAChCN,EAAL,EACElG,CAAAtjB,KAAA,CAAc,GAAd,CAAoBiF,CAAAtG,KAApB,CAAqC,YAArC,CAAmDmrB,CAAApR,SAAnD,CAGF8N,EAAA,CAAYvhB,CAAAtG,KAAZ,CAAA,CAA8BmrB,CAzBkB,CAAlD,CAJF,CAiCA,IAAIhB,CAAJ,CAA8B,CAC5BhpB,CAAA6kB,eAAA,CAAuBrB,CAAvB,CAAiC3hB,CAAjC,CAA+C,CAAA,CAA/C,CAAqD,EAAEqoB,EAAF,GAAwBA,EAAxB,GAA8ClB,CAA9C,EACjDkB,EADiD,GAC3BlB,CAAAmB,oBAD2B,EAArD,CAEAnqB,EAAAkkB,gBAAA,CAAwBV,CAAxB,CAAkC,CAAA,CAAlC,CAEI4G,EAAAA,CAAyB1D,CAAzB0D,EAAwC1D,CAAA,CAAYsC,CAAAnqB,KAAZ,CAC5C,KAAIwrB,GAAwBxoB,CACxBuoB,EAAJ,EAA8BA,CAAAE,WAA9B,EACkD,CAAA,CADlD,GACItB,CAAAuB,iBADJ,GAEEF,EAFF,CAE0BD,CAAAxR,SAF1B,CAKA5iB,EAAA,CAAQ6L,CAAAkhB,kBAAR,CAAyCiG,CAAAjG,kBAAzC,CAAqF,QAAQ,CAACrB,CAAD,CAAaC,CAAb,CAAwB,CAAA,IAC/GK,EAAWN,CAAAM,SADoG,CAE/GD,EAAWL,CAAAK,SAFoG,CAI/GyI,CAJ+G,CAK/GC,CAL+G,CAKpGC,CALoG,CAKzFC,CAE1B,QAJWjJ,CAAAG,KAIX,EAEE,KAAK,GAAL,CACEiE,CAAA8E,SAAA,CAAe5I,CAAf;AAAyB,QAAQ,CAACjrB,CAAD,CAAQ,CACvCszB,EAAA,CAAsB1I,CAAtB,CAAA,CAAmC5qB,CADI,CAAzC,CAGA+uB,EAAA+E,YAAA,CAAkB7I,CAAlB,CAAA8I,QAAA,CAAsC/qB,CAClC+lB,EAAA,CAAM9D,CAAN,CAAJ,GAGEqI,EAAA,CAAsB1I,CAAtB,CAHF,CAGqCpV,CAAA,CAAauZ,CAAA,CAAM9D,CAAN,CAAb,CAAA,CAA8BjiB,CAA9B,CAHrC,CAKA,MAEF,MAAK,GAAL,CACE,GAAIgiB,CAAJ,EAAiB,CAAA+D,CAAA,CAAM9D,CAAN,CAAjB,CACE,KAEFyI,EAAA,CAAYtd,CAAA,CAAO2Y,CAAA,CAAM9D,CAAN,CAAP,CAEV2I,EAAA,CADEF,CAAAM,QAAJ,CACY3vB,EADZ,CAGYuvB,QAAQ,CAAC1kB,CAAD,CAAI+kB,CAAJ,CAAO,CAAE,MAAO/kB,EAAP,GAAa+kB,CAAb,EAAmB/kB,CAAnB,GAAyBA,CAAzB,EAA8B+kB,CAA9B,GAAoCA,CAAtC,CAE3BN,EAAA,CAAYD,CAAAQ,OAAZ,EAAgC,QAAQ,EAAG,CAEzCT,CAAA,CAAYH,EAAA,CAAsB1I,CAAtB,CAAZ,CAA+C8I,CAAA,CAAU1qB,CAAV,CAC/C,MAAM6hB,GAAA,CAAe,WAAf,CAEFkE,CAAA,CAAM9D,CAAN,CAFE,CAEegH,CAAAnqB,KAFf,CAAN,CAHyC,CAO3C2rB,EAAA,CAAYH,EAAA,CAAsB1I,CAAtB,CAAZ,CAA+C8I,CAAA,CAAU1qB,CAAV,CAC3CmrB,EAAAA,CAAmBA,QAAyB,CAACC,CAAD,CAAc,CACvDR,CAAA,CAAQQ,CAAR,CAAqBd,EAAA,CAAsB1I,CAAtB,CAArB,CAAL,GAEOgJ,CAAA,CAAQQ,CAAR,CAAqBX,CAArB,CAAL,CAKEE,CAAA,CAAU3qB,CAAV,CAAiBorB,CAAjB,CAA+Bd,EAAA,CAAsB1I,CAAtB,CAA/B,CALF,CAEE0I,EAAA,CAAsB1I,CAAtB,CAFF,CAEqCwJ,CAJvC,CAUA,OAAOX,EAAP,CAAmBW,CAXyC,CAa9DD,EAAAE,UAAA,CAA6B,CAAA,CAG3BC,EAAA,CADE3J,CAAAI,WAAJ,CACY/hB,CAAAurB,iBAAA,CAAuBxF,CAAA,CAAM9D,CAAN,CAAvB,CAAwCkJ,CAAxC,CADZ,CAGYnrB,CAAAhH,OAAA,CAAaoU,CAAA,CAAO2Y,CAAA,CAAM9D,CAAN,CAAP,CAAwBkJ,CAAxB,CAAb,CAAwD,IAAxD,CAA8DT,CAAAM,QAA9D,CAEZlpB,EAAA0pB,IAAA,CAAiB,UAAjB,CAA6BF,CAA7B,CACA,MAEF,MAAK,GAAL,CACEZ,CACA,CADYtd,CAAA,CAAO2Y,CAAA,CAAM9D,CAAN,CAAP,CACZ,CAAAqI,EAAA,CAAsB1I,CAAtB,CAAA,CAAmC,QAAQ,CAACnJ,CAAD,CAAS,CAClD,MAAOiS,EAAA,CAAU1qB,CAAV,CAAiByY,CAAjB,CAD2C,CAzDxD,CAPmH,CAArH,CAZ4B,CAmF1BkO,CAAJ;CACE1wB,CAAA,CAAQ0wB,CAAR,CAAqB,QAAQ,CAAC5kB,CAAD,CAAa,CACxCA,CAAA,EADwC,CAA1C,CAGA,CAAA4kB,CAAA,CAAc,IAJhB,CAQK9vB,EAAA,CAAI,CAAT,KAAYW,CAAZ,CAAiBoxB,CAAAhzB,OAAjB,CAAoCiB,CAApC,CAAwCW,CAAxC,CAA4CX,CAAA,EAA5C,CACE0xB,CACA,CADSK,CAAA,CAAW/xB,CAAX,CACT,CAAA40B,CAAA,CAAalD,CAAb,CACIA,CAAAzmB,aAAA,CAAsBA,CAAtB,CAAqC9B,CADzC,CAEIyjB,CAFJ,CAGIsC,CAHJ,CAIIwC,CAAAzF,QAJJ,EAIsBsG,CAAA,CAAeb,CAAA/G,cAAf,CAAqC+G,CAAAzF,QAArC,CAAqDW,CAArD,CAA+D4F,CAA/D,CAJtB,CAKIzF,EALJ,CAYF,KAAIgG,GAAe5pB,CACfipB,EAAJ,GAAiCA,CAAAyC,SAAjC,EAA+G,IAA/G,GAAsEzC,CAAA0C,YAAtE,IACE/B,EADF,CACiB9nB,CADjB,CAGAmjB,EAAA,EAAeA,CAAA,CAAY2E,EAAZ,CAA0BJ,CAAA/Y,WAA1B,CAA+Clb,CAA/C,CAA0DixB,CAA1D,CAGf,KAAK3vB,CAAL,CAASgyB,CAAAjzB,OAAT,CAA8B,CAA9B,CAAsC,CAAtC,EAAiCiB,CAAjC,CAAyCA,CAAA,EAAzC,CACE0xB,CACA,CADSM,CAAA,CAAYhyB,CAAZ,CACT,CAAA40B,CAAA,CAAalD,CAAb,CACIA,CAAAzmB,aAAA,CAAsBA,CAAtB,CAAqC9B,CADzC,CAEIyjB,CAFJ,CAGIsC,CAHJ,CAIIwC,CAAAzF,QAJJ,EAIsBsG,CAAA,CAAeb,CAAA/G,cAAf,CAAqC+G,CAAAzF,QAArC,CAAqDW,CAArD,CAA+D4F,CAA/D,CAJtB,CAKIzF,EALJ,CA1K+E,CArRnFG,CAAA,CAAyBA,CAAzB,EAAmD,EAsBnD,KAvBqD,IAGjD6H,EAAmB,CAAChL,MAAAC,UAH6B,CAIjDgL,CAJiD,CAKjDhC,EAAuB9F,CAAA8F,qBAL0B,CAMjDlD,CANiD,CAOjDsC,EAA2BlF,CAAAkF,yBAPsB,CAQjDkB,GAAoBpG,CAAAoG,kBAR6B,CASjD2B,GAA4B/H,CAAA+H,0BATqB,CAUjDC,GAAyB,CAAA,CAVwB,CAWjDC,EAAc,CAAA,CAXmC,CAYjDrC,EAAgC5F,CAAA4F,8BAZiB;AAajDsC,EAAexD,CAAArC,UAAf6F,CAAyClvB,CAAA,CAAOyrB,CAAP,CAbQ,CAcjDpjB,CAdiD,CAejDoc,EAfiD,CAgBjD0K,CAhBiD,CAkBjDC,GAAoBvI,CAlB6B,CAmBjD2E,EAnBiD,CAuB5C1xB,EAAI,CAvBwC,CAuBrCW,EAAKorB,CAAAhtB,OAArB,CAAwCiB,CAAxC,CAA4CW,CAA5C,CAAgDX,CAAA,EAAhD,CAAqD,CACnDuO,CAAA,CAAYwd,CAAA,CAAW/rB,CAAX,CACZ,KAAIsxB,GAAY/iB,CAAAgnB,QAAhB,CACIhE,EAAUhjB,CAAAinB,MAGVlE,GAAJ,GACE8D,CADF,CACiB/D,EAAA,CAAUM,CAAV,CAAuBL,EAAvB,CAAkCC,CAAlC,CADjB,CAGA8D,EAAA,CAAY32B,CAEZ,IAAIq2B,CAAJ,CAAuBxmB,CAAAyd,SAAvB,CACE,KAGF,IAAIyJ,CAAJ,CAAqBlnB,CAAApF,MAArB,CAIOoF,CAAAumB,YAeL,GAdMlzB,CAAA,CAAS6zB,CAAT,CAAJ,EAGEC,EAAA,CAAkB,oBAAlB,CAAwCtD,CAAxC,EAAoE4C,CAApE,CACkBzmB,CADlB,CAC6B6mB,CAD7B,CAEA,CAAAhD,CAAA,CAA2B7jB,CAL7B,EASEmnB,EAAA,CAAkB,oBAAlB,CAAwCtD,CAAxC,CAAkE7jB,CAAlE,CACkB6mB,CADlB,CAKJ,EAAAJ,CAAA,CAAoBA,CAApB,EAAyCzmB,CAG3Coc,GAAA,CAAgBpc,CAAAtG,KAEX6sB,EAAAvmB,CAAAumB,YAAL,EAA8BvmB,CAAArD,WAA9B,GACEuqB,CAIA,CAJiBlnB,CAAArD,WAIjB,CAHA8nB,CAGA,CAHuBA,CAGvB,EAH+C,EAG/C,CAFA0C,EAAA,CAAkB,GAAlB,CAAwB/K,EAAxB,CAAwC,cAAxC,CACIqI,CAAA,CAAqBrI,EAArB,CADJ,CACyCpc,CADzC,CACoD6mB,CADpD,CAEA,CAAApC,CAAA,CAAqBrI,EAArB,CAAA,CAAsCpc,CALxC,CAQA,IAAIknB,CAAJ,CAAqBlnB,CAAAwgB,WAArB,CACEmG,EAUA,CAVyB,CAAA,CAUzB,CALK3mB,CAAAonB,MAKL,GAJED,EAAA,CAAkB,cAAlB,CAAkCT,EAAlC,CAA6D1mB,CAA7D,CAAwE6mB,CAAxE,CACA,CAAAH,EAAA,CAA4B1mB,CAG9B,EAAsB,SAAtB,EAAIknB,CAAJ,EACE3C,CASA,CATgC,CAAA,CAShC,CARAiC,CAQA,CARmBxmB,CAAAyd,SAQnB,CAPAqJ,CAOA,CAPYD,CAOZ,CANAA,CAMA,CANexD,CAAArC,UAMf,CALIrpB,CAAA,CAAOzH,CAAAm3B,cAAA,CAAuB,GAAvB,CAA6BjL,EAA7B,CAA6C,IAA7C;AACuBiH,CAAA,CAAcjH,EAAd,CADvB,CACsD,GADtD,CAAP,CAKJ,CAHAgH,CAGA,CAHcyD,CAAA,CAAa,CAAb,CAGd,CAFAS,CAAA,CAAYhE,CAAZ,CApyMH5sB,EAAAvF,KAAA,CAoyMuC21B,CApyMvC,CAA+B,CAA/B,CAoyMG,CAAgD1D,CAAhD,CAEA,CAAA2D,EAAA,CAAoBlsB,CAAA,CAAQisB,CAAR,CAAmBtI,CAAnB,CAAiCgI,CAAjC,CACQe,CADR,EAC4BA,CAAA7tB,KAD5B,CACmD,CAQzCgtB,0BAA2BA,EARc,CADnD,CAVtB,GAsBEI,CAEA,CAFYnvB,CAAA,CAAOoU,EAAA,CAAYqX,CAAZ,CAAP,CAAAoE,SAAA,EAEZ,CADAX,CAAAhvB,MAAA,EACA,CAAAkvB,EAAA,CAAoBlsB,CAAA,CAAQisB,CAAR,CAAmBtI,CAAnB,CAxBtB,CA4BF,IAAIxe,CAAAsmB,SAAJ,CAWE,GAVAM,CAUIzuB,CAVU,CAAA,CAUVA,CATJgvB,EAAA,CAAkB,UAAlB,CAA8BpC,EAA9B,CAAiD/kB,CAAjD,CAA4D6mB,CAA5D,CASI1uB,CARJ4sB,EAQI5sB,CARgB6H,CAQhB7H,CANJ+uB,CAMI/uB,CANclH,CAAA,CAAW+O,CAAAsmB,SAAX,CAAD,CACXtmB,CAAAsmB,SAAA,CAAmBO,CAAnB,CAAiCxD,CAAjC,CADW,CAEXrjB,CAAAsmB,SAIFnuB,CAFJ+uB,CAEI/uB,CAFasvB,EAAA,CAAoBP,CAApB,CAEb/uB,CAAA6H,CAAA7H,QAAJ,CAAuB,CACrBovB,CAAA,CAAmBvnB,CAIjB8mB,EAAA,CAz4JJpc,EAAAxP,KAAA,CAs4JuBgsB,CAt4JvB,CAs4JE,CAGcQ,EAAA,CAAelI,EAAA,CAAaxf,CAAA2nB,kBAAb,CAA0Cjc,CAAA,CAAKwb,CAAL,CAA1C,CAAf,CAHd,CACc,EAId9D,EAAA,CAAc0D,CAAA,CAAU,CAAV,CAEd,IAAwB,CAAxB,EAAIA,CAAAt2B,OAAJ,EAA6B4yB,CAAA3yB,SAA7B,GAAsDC,EAAtD,CACE,KAAM+rB,GAAA,CAAe,OAAf,CAEFL,EAFE,CAEa,EAFb,CAAN,CAKFkL,CAAA,CAAYhE,CAAZ,CAA0BuD,CAA1B,CAAwCzD,CAAxC,CAEIwE,EAAAA,CAAmB,CAACjG,MAAO,EAAR,CAOnBkG,EAAAA,CAAqB/G,CAAA,CAAkBsC,CAAlB,CAA+B,EAA/B,CAAmCwE,CAAnC,CACzB,KAAIE,GAAwBtK,CAAA1oB,OAAA,CAAkBrD,CAAlB,CAAsB,CAAtB,CAAyB+rB,CAAAhtB,OAAzB,EAA8CiB,CAA9C,CAAkD,CAAlD,EAExBoyB,EAAJ,EACEkE,CAAA,CAAwBF,CAAxB,CAEFrK,EAAA,CAAaA,CAAAjnB,OAAA,CAAkBsxB,CAAlB,CAAAtxB,OAAA,CAA6CuxB,EAA7C,CACbE,EAAA,CAAwB3E,CAAxB,CAAuCuE,CAAvC,CAEAx1B,EAAA,CAAKorB,CAAAhtB,OAjCgB,CAAvB,IAmCEq2B,EAAA5uB,KAAA,CAAkBivB,CAAlB,CAIJ,IAAIlnB,CAAAumB,YAAJ,CACEK,CAeA;AAfc,CAAA,CAed,CAdAO,EAAA,CAAkB,UAAlB,CAA8BpC,EAA9B,CAAiD/kB,CAAjD,CAA4D6mB,CAA5D,CAcA,CAbA9B,EAaA,CAboB/kB,CAapB,CAXIA,CAAA7H,QAWJ,GAVEovB,CAUF,CAVqBvnB,CAUrB,EAPAogB,CAOA,CAPa6H,EAAA,CAAmBzK,CAAA1oB,OAAA,CAAkBrD,CAAlB,CAAqB+rB,CAAAhtB,OAArB,CAAyCiB,CAAzC,CAAnB,CAAgEo1B,CAAhE,CACTxD,CADS,CACMC,CADN,CACoBqD,EADpB,EAC8CI,EAD9C,CACiEvD,CADjE,CAC6EC,CAD7E,CAC0F,CACjGgB,qBAAsBA,CAD2E,CAEjGZ,yBAA0BA,CAFuE,CAGjGkB,kBAAmBA,EAH8E,CAIjG2B,0BAA2BA,EAJsE,CAD1F,CAOb,CAAAt0B,CAAA,CAAKorB,CAAAhtB,OAhBP,KAiBO,IAAIwP,CAAAnF,QAAJ,CACL,GAAI,CACFsoB,EACA,CADSnjB,CAAAnF,QAAA,CAAkBgsB,CAAlB,CAAgCxD,CAAhC,CAA+C0D,EAA/C,CACT,CAAI91B,CAAA,CAAWkyB,EAAX,CAAJ,CACEO,CAAA,CAAW,IAAX,CAAiBP,EAAjB,CAAyBJ,EAAzB,CAAoCC,CAApC,CADF,CAEWG,EAFX,EAGEO,CAAA,CAAWP,EAAAQ,IAAX,CAAuBR,EAAAS,KAAvB,CAAoCb,EAApC,CAA+CC,CAA/C,CALA,CAOF,MAAOlrB,EAAP,CAAU,CACVkP,CAAA,CAAkBlP,EAAlB,CAAqBJ,EAAA,CAAYmvB,CAAZ,CAArB,CADU,CAKV7mB,CAAAihB,SAAJ,GACEb,CAAAa,SACA,CADsB,CAAA,CACtB,CAAAuF,CAAA,CAAmB0B,IAAAC,IAAA,CAAS3B,CAAT,CAA2BxmB,CAAAyd,SAA3B,CAFrB,CAtKmD,CA6KrD2C,CAAAxlB,MAAA,CAAmB6rB,CAAnB,EAAoE,CAAA,CAApE,GAAwCA,CAAA7rB,MACxCwlB,EAAAE,wBAAA,CAAqCqG,EACrCvG,EAAAK,+BAAA,CAA4C8D,CAC5CnE,EAAAM,sBAAA,CAAmCkG,CACnCxG,EAAAI,WAAA,CAAwBuG,EAExBpI;CAAA4F,8BAAA,CAAuDA,CAGvD,OAAOnE,EA7M8C,CAgevD2H,QAASA,EAAuB,CAACvK,CAAD,CAAa,CAE3C,IAF2C,IAElClrB,EAAI,CAF8B,CAE3BC,EAAKirB,CAAAhtB,OAArB,CAAwC8B,CAAxC,CAA4CC,CAA5C,CAAgDD,CAAA,EAAhD,CACEkrB,CAAA,CAAWlrB,CAAX,CAAA,CAAgBK,EAAA,CAAQ6qB,CAAA,CAAWlrB,CAAX,CAAR,CAAuB,CAACwxB,eAAgB,CAAA,CAAjB,CAAvB,CAHyB,CAqB7ClC,QAASA,GAAY,CAACwG,CAAD,CAAc1uB,CAAd,CAAoB+B,CAApB,CAA8BgjB,CAA9B,CAA2CC,CAA3C,CAA4D2J,CAA5D,CACCC,CADD,CACc,CACjC,GAAI5uB,CAAJ,GAAaglB,CAAb,CAA8B,MAAO,KACjChpB,EAAAA,CAAQ,IACZ,IAAIonB,CAAA5rB,eAAA,CAA6BwI,CAA7B,CAAJ,CAAwC,CAAA,IAC7BsG,CAAWwd,EAAAA,CAAa1J,CAAAjY,IAAA,CAAcnC,CAAd,CAr1C1B6jB,WAq1C0B,CAAjC,KADsC,IAElC9rB,EAAI,CAF8B,CAE3BW,EAAKorB,CAAAhtB,OADhB,CACmCiB,CADnC,CACuCW,CADvC,CAC2CX,CAAA,EAD3C,CAEE,GAAI,CACFuO,CACA,CADYwd,CAAA,CAAW/rB,CAAX,CACZ,EAAKgtB,CAAL,GAAqBtuB,CAArB,EAAkCsuB,CAAlC,CAAgDze,CAAAyd,SAAhD,GAC8C,EAD9C,EACKzd,CAAA2d,SAAA9oB,QAAA,CAA2B4G,CAA3B,CADL,GAEM4sB,CAIJ,GAHEroB,CAGF,CAHcrN,EAAA,CAAQqN,CAAR,CAAmB,CAACgnB,QAASqB,CAAV,CAAyBpB,MAAOqB,CAAhC,CAAnB,CAGd,EADAF,CAAA/yB,KAAA,CAAiB2K,CAAjB,CACA,CAAAtK,CAAA,CAAQsK,CANV,CAFE,CAUF,MAAOlI,CAAP,CAAU,CAAEkP,CAAA,CAAkBlP,CAAlB,CAAF,CAbwB,CAgBxC,MAAOpC,EAnB0B,CA+BnC6sB,QAASA,EAAuB,CAAC7oB,CAAD,CAAO,CACrC,GAAIojB,CAAA5rB,eAAA,CAA6BwI,CAA7B,CAAJ,CACE,IADsC,IAClB8jB,EAAa1J,CAAAjY,IAAA,CAAcnC,CAAd,CAl3C1B6jB,WAk3C0B,CADK,CAElC9rB,EAAI,CAF8B,CAE3BW,EAAKorB,CAAAhtB,OADhB,CACmCiB,CADnC,CACuCW,CADvC,CAC2CX,CAAA,EAD3C,CAGE,GADAuO,CACIuoB,CADQ/K,CAAA,CAAW/rB,CAAX,CACR82B,CAAAvoB,CAAAuoB,aAAJ,CACE,MAAO,CAAA,CAIb;MAAO,CAAA,CAV8B,CAqBvCP,QAASA,EAAuB,CAAC71B,CAAD,CAAM4D,CAAN,CAAW,CAAA,IACrCyyB,EAAUzyB,CAAA4rB,MAD2B,CAErC8G,EAAUt2B,CAAAwvB,MAF2B,CAGrCtD,EAAWlsB,CAAA6uB,UAGfnwB,EAAA,CAAQsB,CAAR,CAAa,QAAQ,CAACP,CAAD,CAAQZ,CAAR,CAAa,CACX,GAArB,EAAIA,CAAAgF,OAAA,CAAW,CAAX,CAAJ,GACMD,CAAA,CAAI/E,CAAJ,CAGJ,EAHgB+E,CAAA,CAAI/E,CAAJ,CAGhB,GAH6BY,CAG7B,GAFEA,CAEF,GAFoB,OAAR,GAAAZ,CAAA,CAAkB,GAAlB,CAAwB,GAEpC,EAF2C+E,CAAA,CAAI/E,CAAJ,CAE3C,EAAAmB,CAAAu2B,KAAA,CAAS13B,CAAT,CAAcY,CAAd,CAAqB,CAAA,CAArB,CAA2B42B,CAAA,CAAQx3B,CAAR,CAA3B,CAJF,CADgC,CAAlC,CAUAH,EAAA,CAAQkF,CAAR,CAAa,QAAQ,CAACnE,CAAD,CAAQZ,CAAR,CAAa,CACrB,OAAX,EAAIA,CAAJ,EACEotB,CAAA,CAAaC,CAAb,CAAuBzsB,CAAvB,CACA,CAAAO,CAAA,CAAI,OAAJ,CAAA,EAAgBA,CAAA,CAAI,OAAJ,CAAA,CAAeA,CAAA,CAAI,OAAJ,CAAf,CAA8B,GAA9B,CAAoC,EAApD,EAA0DP,CAF5D,EAGkB,OAAX,EAAIZ,CAAJ,EACLqtB,CAAAnqB,KAAA,CAAc,OAAd,CAAuBmqB,CAAAnqB,KAAA,CAAc,OAAd,CAAvB,CAAgD,GAAhD,CAAsDtC,CAAtD,CACA,CAAAO,CAAA,MAAA,EAAgBA,CAAA,MAAA,CAAeA,CAAA,MAAf,CAA8B,GAA9B,CAAoC,EAApD,EAA0DP,CAFrD,EAMqB,GANrB,EAMIZ,CAAAgF,OAAA,CAAW,CAAX,CANJ,EAM6B7D,CAAAjB,eAAA,CAAmBF,CAAnB,CAN7B,GAOLmB,CAAA,CAAInB,CAAJ,CACA,CADWY,CACX,CAAA62B,CAAA,CAAQz3B,CAAR,CAAA,CAAew3B,CAAA,CAAQx3B,CAAR,CARV,CAJyB,CAAlC,CAhByC,CAkC3Ci3B,QAASA,GAAkB,CAACzK,CAAD,CAAaqJ,CAAb,CAA2B8B,CAA3B,CACvB/I,CADuB,CACTmH,CADS,CACUvD,CADV,CACsBC,CADtB,CACmC9E,CADnC,CAC2D,CAAA,IAChFiK,EAAY,EADoE,CAEhFC,CAFgF,CAGhFC,CAHgF,CAIhFC,EAA4BlC,CAAA,CAAa,CAAb,CAJoD,CAKhFmC,EAAqBxL,CAAApK,MAAA,EAL2D,CAMhF6V,EAAuBt2B,EAAA,CAAQq2B,CAAR,CAA4B,CACjDzC,YAAa,IADoC,CAC9B/F,WAAY,IADkB;AACZroB,QAAS,IADG,CACG6sB,oBAAqBgE,CADxB,CAA5B,CANyD,CAShFzC,EAAet1B,CAAA,CAAW+3B,CAAAzC,YAAX,CAAD,CACRyC,CAAAzC,YAAA,CAA+BM,CAA/B,CAA6C8B,CAA7C,CADQ,CAERK,CAAAzC,YAX0E,CAYhFoB,EAAoBqB,CAAArB,kBAExBd,EAAAhvB,MAAA,EAEAmR,EAAA,CAAiBR,CAAA0gB,sBAAA,CAA2B3C,CAA3B,CAAjB,CAAA4C,KAAA,CACQ,QAAQ,CAACC,CAAD,CAAU,CAAA,IAClBhG,CADkB,CACyBrD,CAE/CqJ,EAAA,CAAU3B,EAAA,CAAoB2B,CAApB,CAEV,IAAIJ,CAAA7wB,QAAJ,CAAgC,CAI5B2uB,CAAA,CAn3KJpc,EAAAxP,KAAA,CAg3KuBkuB,CAh3KvB,CAg3KE,CAGc1B,EAAA,CAAelI,EAAA,CAAamI,CAAb,CAAgCjc,CAAA,CAAK0d,CAAL,CAAhC,CAAf,CAHd,CACc,EAIdhG,EAAA,CAAc0D,CAAA,CAAU,CAAV,CAEd,IAAwB,CAAxB,EAAIA,CAAAt2B,OAAJ,EAA6B4yB,CAAA3yB,SAA7B,GAAsDC,EAAtD,CACE,KAAM+rB,GAAA,CAAe,OAAf,CAEFuM,CAAAtvB,KAFE,CAEuB6sB,CAFvB,CAAN,CAKF8C,CAAA,CAAoB,CAAC1H,MAAO,EAAR,CACpB2F,EAAA,CAAY1H,CAAZ,CAA0BiH,CAA1B,CAAwCzD,CAAxC,CACA,KAAIyE,EAAqB/G,CAAA,CAAkBsC,CAAlB,CAA+B,EAA/B,CAAmCiG,CAAnC,CAErBh2B,EAAA,CAAS21B,CAAApuB,MAAT,CAAJ,EACEmtB,CAAA,CAAwBF,CAAxB,CAEFrK,EAAA,CAAaqK,CAAAtxB,OAAA,CAA0BinB,CAA1B,CACbwK,EAAA,CAAwBW,CAAxB,CAAgCU,CAAhC,CAtB8B,CAAhC,IAwBEjG,EACA,CADc2F,CACd,CAAAlC,CAAA5uB,KAAA,CAAkBmxB,CAAlB,CAGF5L,EAAAnjB,QAAA,CAAmB4uB,CAAnB,CAEAJ,EAAA,CAA0B9H,EAAA,CAAsBvD,CAAtB,CAAkC4F,CAAlC,CAA+CuF,CAA/C,CACtB5B,CADsB,CACHF,CADG,CACWmC,CADX,CAC+BxF,CAD/B,CAC2CC,CAD3C,CAEtB9E,CAFsB,CAG1B9tB,EAAA,CAAQ+uB,CAAR,CAAsB,QAAQ,CAAC7rB,CAAD,CAAOtC,CAAP,CAAU,CAClCsC,CAAJ,EAAYqvB,CAAZ,GACExD,CAAA,CAAanuB,CAAb,CADF,CACoBo1B,CAAA,CAAa,CAAb,CADpB,CADsC,CAAxC,CAOA,KAFAiC,CAEA,CAF2BhK,CAAA,CAAa+H,CAAA,CAAa,CAAb,CAAAxb,WAAb,CAAyC0b,CAAzC,CAE3B,CAAO6B,CAAAp4B,OAAP,CAAA,CAAyB,CACnBoK,CAAAA;AAAQguB,CAAAxV,MAAA,EACRkW,EAAAA,CAAyBV,CAAAxV,MAAA,EAFN,KAGnBmW,EAAkBX,CAAAxV,MAAA,EAHC,CAInBgO,EAAoBwH,CAAAxV,MAAA,EAJD,CAKnBgR,EAAWyC,CAAA,CAAa,CAAb,CAEf,IAAI2C,CAAA5uB,CAAA4uB,YAAJ,CAAA,CAEA,GAAIF,CAAJ,GAA+BP,CAA/B,CAA0D,CACxD,IAAIU,EAAaH,CAAAhL,UAEXK,EAAA4F,8BAAN,EACIyE,CAAA7wB,QADJ,GAGEisB,CAHF,CAGarY,EAAA,CAAYqX,CAAZ,CAHb,CAKAkE,EAAA,CAAYiC,CAAZ,CAA6B5xB,CAAA,CAAO2xB,CAAP,CAA7B,CAA6DlF,CAA7D,CAGAhG,EAAA,CAAazmB,CAAA,CAAOysB,CAAP,CAAb,CAA+BqF,CAA/B,CAXwD,CAcxD1J,CAAA,CADE8I,CAAAvI,wBAAJ,CAC2BC,CAAA,CAAwB3lB,CAAxB,CAA+BiuB,CAAArI,WAA/B,CAAmEY,CAAnE,CAD3B,CAG2BA,CAE3ByH,EAAA,CAAwBC,CAAxB,CAAkDluB,CAAlD,CAAyDwpB,CAAzD,CAAmExE,CAAnE,CACEG,CADF,CApBA,CAPuB,CA8BzB6I,CAAA,CAAY,IA3EU,CAD1B,CA+EA,OAAOc,SAA0B,CAACC,CAAD,CAAoB/uB,CAApB,CAA2B7G,CAA3B,CAAiC6H,CAAjC,CAA8CwlB,CAA9C,CAAiE,CAC5FrB,CAAAA,CAAyBqB,CACzBxmB,EAAA4uB,YAAJ,GACIZ,CAAJ,CACEA,CAAAvzB,KAAA,CAAeuF,CAAf,CACe7G,CADf,CAEe6H,CAFf,CAGemkB,CAHf,CADF,EAMM8I,CAAAvI,wBAGJ,GAFEP,CAEF,CAF2BQ,CAAA,CAAwB3lB,CAAxB,CAA+BiuB,CAAArI,WAA/B,CAAmEY,CAAnE,CAE3B,EAAAyH,CAAA,CAAwBC,CAAxB,CAAkDluB,CAAlD,CAAyD7G,CAAzD,CAA+D6H,CAA/D,CAA4EmkB,CAA5E,CATF,CADA,CAFgG,CA/Fd,CAoHtF8C,QAASA,GAAU,CAAC/hB,CAAD,CAAI+kB,CAAJ,CAAO,CACxB,IAAI+D,EAAO/D,CAAApI,SAAPmM,CAAoB9oB,CAAA2c,SACxB,OAAa,EAAb,GAAImM,CAAJ,CAAuBA,CAAvB,CACI9oB,CAAApH,KAAJ,GAAemsB,CAAAnsB,KAAf,CAA+BoH,CAAApH,KAAD,CAAUmsB,CAAAnsB,KAAV,CAAqB,EAArB,CAAyB,CAAvD,CACOoH,CAAAlM,MADP,CACiBixB,CAAAjxB,MAJO,CAQ1BuyB,QAASA,GAAiB,CAAC0C,CAAD;AAAOC,CAAP,CAA0B9pB,CAA1B,CAAqCxL,CAArC,CAA8C,CACtE,GAAIs1B,CAAJ,CACE,KAAMrN,GAAA,CAAe,UAAf,CACFqN,CAAApwB,KADE,CACsBsG,CAAAtG,KADtB,CACsCmwB,CADtC,CAC4CnyB,EAAA,CAAYlD,CAAZ,CAD5C,CAAN,CAFoE,CAQxEmuB,QAASA,GAA2B,CAACnF,CAAD,CAAauM,CAAb,CAAmB,CACrD,IAAIC,EAAgB5iB,CAAA,CAAa2iB,CAAb,CAAmB,CAAA,CAAnB,CAChBC,EAAJ,EACExM,CAAAnoB,KAAA,CAAgB,CACdooB,SAAU,CADI,CAEd5iB,QAASovB,QAAiC,CAACC,CAAD,CAAe,CACnDC,CAAAA,CAAqBD,CAAAt3B,OAAA,EAAzB,KACIw3B,EAAmB,CAAE55B,CAAA25B,CAAA35B,OAIrB45B,EAAJ,EAAsBvvB,CAAAwvB,kBAAA,CAA0BF,CAA1B,CAEtB,OAAOG,SAA8B,CAAC1vB,CAAD,CAAQ7G,CAAR,CAAc,CACjD,IAAInB,EAASmB,CAAAnB,OAAA,EACRw3B,EAAL,EAAuBvvB,CAAAwvB,kBAAA,CAA0Bz3B,CAA1B,CACvBiI,EAAA0vB,iBAAA,CAAyB33B,CAAzB,CAAiCo3B,CAAAQ,YAAjC,CACA5vB,EAAAhH,OAAA,CAAao2B,CAAb,CAA4BS,QAAiC,CAAC74B,CAAD,CAAQ,CACnEmC,CAAA,CAAK,CAAL,CAAA6qB,UAAA,CAAoBhtB,CAD+C,CAArE,CAJiD,CARI,CAF3C,CAAhB,CAHmD,CA2BvD4tB,QAASA,GAAY,CAAChT,CAAD,CAAO8Z,CAAP,CAAiB,CACpC9Z,CAAA,CAAO/X,CAAA,CAAU+X,CAAV,EAAkB,MAAlB,CACP,QAAQA,CAAR,EACA,KAAK,KAAL,CACA,KAAK,MAAL,CACE,IAAIke,EAAUx6B,CAAA0a,cAAA,CAAuB,KAAvB,CACd8f,EAAAxf,UAAA,CAAoB,GAApB,CAA0BsB,CAA1B,CAAiC,GAAjC,CAAuC8Z,CAAvC,CAAkD,IAAlD,CAAyD9Z,CAAzD,CAAgE,GAChE,OAAOke,EAAArf,WAAA,CAAmB,CAAnB,CAAAA,WACT,SACE,MAAOib,EAPT,CAFoC,CA54CgD;AA05CtFqE,QAASA,EAAiB,CAAC52B,CAAD,CAAO62B,CAAP,CAA2B,CACnD,GAA0B,QAA1B,EAAIA,CAAJ,CACE,MAAOpiB,EAAAqiB,KAET,KAAIzwB,EAAM7F,EAAA,CAAUR,CAAV,CAEV,IAA0B,WAA1B,EAAI62B,CAAJ,EACY,MADZ,EACKxwB,CADL,EAC4C,QAD5C,EACsBwwB,CADtB,EAEY,KAFZ,EAEKxwB,CAFL,GAE4C,KAF5C,EAEsBwwB,CAFtB,EAG4C,OAH5C,EAGsBA,CAHtB,EAIE,MAAOpiB,EAAAsiB,aAV0C,CAerDrI,QAASA,GAA2B,CAAC1uB,CAAD,CAAOypB,CAAP,CAAmB5rB,CAAnB,CAA0B8H,CAA1B,CAAgCqxB,CAAhC,CAA8C,CAChF,IAAIC,EAAiBL,CAAA,CAAkB52B,CAAlB,CAAwB2F,CAAxB,CACrBqxB,EAAA,CAAe9N,CAAA,CAAqBvjB,CAArB,CAAf,EAA6CqxB,CAE7C,KAAIf,EAAgB5iB,CAAA,CAAaxV,CAAb,CAAoB,CAAA,CAApB,CAA0Bo5B,CAA1B,CAA0CD,CAA1C,CAGpB,IAAKf,CAAL,CAAA,CAGA,GAAa,UAAb,GAAItwB,CAAJ,EAA+C,QAA/C,GAA2BnF,EAAA,CAAUR,CAAV,CAA3B,CACE,KAAM0oB,GAAA,CAAe,UAAf,CAEF/kB,EAAA,CAAY3D,CAAZ,CAFE,CAAN,CAKFypB,CAAAnoB,KAAA,CAAgB,CACdooB,SAAU,GADI,CAEd5iB,QAASA,QAAQ,EAAG,CAChB,MAAO,CACL8oB,IAAKsH,QAAiC,CAACrwB,CAAD,CAAQpG,CAAR,CAAiBN,CAAjB,CAAuB,CACvDwxB,CAAAA,CAAexxB,CAAAwxB,YAAfA,GAAoCxxB,CAAAwxB,YAApCA,CAAuD,EAAvDA,CAEJ,IAAIvI,CAAAjiB,KAAA,CAA+BxB,CAA/B,CAAJ,CACE,KAAM+iB,GAAA,CAAe,aAAf,CAAN,CAMF,IAAIyO,EAAWh3B,CAAA,CAAKwF,CAAL,CACXwxB,EAAJ,GAAiBt5B,CAAjB,GAIEo4B,CACA,CADgBkB,CAChB,EAD4B9jB,CAAA,CAAa8jB,CAAb,CAAuB,CAAA,CAAvB,CAA6BF,CAA7B,CAA6CD,CAA7C,CAC5B,CAAAn5B,CAAA,CAAQs5B,CALV,CAUKlB,EAAL,GAKA91B,CAAA,CAAKwF,CAAL,CAGA,CAHaswB,CAAA,CAAcpvB,CAAd,CAGb,CADAuwB,CAACzF,CAAA,CAAYhsB,CAAZ,CAADyxB,GAAuBzF,CAAA,CAAYhsB,CAAZ,CAAvByxB,CAA2C,EAA3CA,UACA;AAD0D,CAAA,CAC1D,CAAAv3B,CAACM,CAAAwxB,YAAD9xB,EAAqBM,CAAAwxB,YAAA,CAAiBhsB,CAAjB,CAAAisB,QAArB/xB,EAAuDgH,CAAvDhH,QAAA,CACSo2B,CADT,CACwBS,QAAiC,CAACS,CAAD,CAAWE,CAAX,CAAqB,CAO7D,OAAb,GAAI1xB,CAAJ,EAAwBwxB,CAAxB,EAAoCE,CAApC,CACEl3B,CAAAm3B,aAAA,CAAkBH,CAAlB,CAA4BE,CAA5B,CADF,CAGEl3B,CAAAw0B,KAAA,CAAUhvB,CAAV,CAAgBwxB,CAAhB,CAVwE,CAD9E,CARA,CArB2D,CADxD,CADS,CAFN,CAAhB,CATA,CAPgF,CAgFlF5D,QAASA,EAAW,CAAC1H,CAAD,CAAe0L,CAAf,CAAiCC,CAAjC,CAA0C,CAAA,IACxDC,EAAuBF,CAAA,CAAiB,CAAjB,CADiC,CAExDG,EAAcH,CAAA96B,OAF0C,CAGxDoC,EAAS44B,CAAAld,WAH+C,CAIxD7c,CAJwD,CAIrDW,CAEP,IAAIwtB,CAAJ,CACE,IAAKnuB,CAAO,CAAH,CAAG,CAAAW,CAAA,CAAKwtB,CAAApvB,OAAjB,CAAsCiB,CAAtC,CAA0CW,CAA1C,CAA8CX,CAAA,EAA9C,CACE,GAAImuB,CAAA,CAAanuB,CAAb,CAAJ,EAAuB+5B,CAAvB,CAA6C,CAC3C5L,CAAA,CAAanuB,CAAA,EAAb,CAAA,CAAoB85B,CACJG,EAAAA,CAAKp5B,CAALo5B,CAASD,CAATC,CAAuB,CAAvC,KAAS,IACAn5B,EAAKqtB,CAAApvB,OADd,CAEK8B,CAFL,CAESC,CAFT,CAEaD,CAAA,EAAA,CAAKo5B,CAAA,EAFlB,CAGMA,CAAJ,CAASn5B,CAAT,CACEqtB,CAAA,CAAattB,CAAb,CADF,CACoBstB,CAAA,CAAa8L,CAAb,CADpB,CAGE,OAAO9L,CAAA,CAAattB,CAAb,CAGXstB,EAAApvB,OAAA,EAAuBi7B,CAAvB,CAAqC,CAKjC7L,EAAA7uB,QAAJ,GAA6By6B,CAA7B,GACE5L,CAAA7uB,QADF,CACyBw6B,CADzB,CAGA,MAnB2C,CAwB7C34B,CAAJ,EACEA,CAAA+4B,aAAA,CAAoBJ,CAApB,CAA6BC,CAA7B,CAIEhhB,EAAAA,CAAWta,CAAAua,uBAAA,EACfD,EAAAG,YAAA,CAAqB6gB,CAArB,CAKA7zB,EAAA,CAAO4zB,CAAP,CAAAxwB,KAAA,CAAqBpD,CAAA,CAAO6zB,CAAP,CAAAzwB,KAAA,EAArB,CAKKwB,GAAL,EAUEU,EACA,CADmC,CAAA,CACnC,CAAAV,EAAAM,UAAA,CAAiB,CAAC2uB,CAAD,CAAjB,CAXF,EACE,OAAO7zB,CAAAmb,MAAA,CAAa0Y,CAAA,CAAqB7zB,CAAAi0B,QAArB,CAAb,CAaAC;CAAAA,CAAI,CAAb,KAAgBC,CAAhB,CAAqBR,CAAA96B,OAArB,CAA8Cq7B,CAA9C,CAAkDC,CAAlD,CAAsDD,CAAA,EAAtD,CACMr3B,CAGJ,CAHc82B,CAAA,CAAiBO,CAAjB,CAGd,CAFAl0B,CAAA,CAAOnD,CAAP,CAAAonB,OAAA,EAEA,CADApR,CAAAG,YAAA,CAAqBnW,CAArB,CACA,CAAA,OAAO82B,CAAA,CAAiBO,CAAjB,CAGTP,EAAA,CAAiB,CAAjB,CAAA,CAAsBC,CACtBD,EAAA96B,OAAA,CAA0B,CAtEkC,CA0E9DuzB,QAASA,EAAkB,CAACltB,CAAD,CAAKk1B,CAAL,CAAiB,CAC1C,MAAO75B,EAAA,CAAO,QAAQ,EAAG,CAAE,MAAO2E,EAAAG,MAAA,CAAS,IAAT,CAAe3E,SAAf,CAAT,CAAlB,CAAyDwE,CAAzD,CAA6Dk1B,CAA7D,CADmC,CAK5C1F,QAASA,EAAY,CAAClD,CAAD,CAASvoB,CAAT,CAAgByjB,CAAhB,CAA0BsC,CAA1B,CAAiCY,CAAjC,CAA8C/C,CAA9C,CAA4D,CAC/E,GAAI,CACF2E,CAAA,CAAOvoB,CAAP,CAAcyjB,CAAd,CAAwBsC,CAAxB,CAA+BY,CAA/B,CAA4C/C,CAA5C,CADE,CAEF,MAAO1mB,CAAP,CAAU,CACVkP,CAAA,CAAkBlP,CAAlB,CAAqBJ,EAAA,CAAY2mB,CAAZ,CAArB,CADU,CAHmE,CAtkDjF,IAAIwC,GAAaA,QAAQ,CAACrsB,CAAD,CAAUw3B,CAAV,CAA4B,CACnD,GAAIA,CAAJ,CAAsB,CACpB,IAAI16B,EAAOC,MAAAD,KAAA,CAAY06B,CAAZ,CAAX,CACIv6B,CADJ,CACO6a,CADP,CACUtb,CAELS,EAAA,CAAI,CAAT,KAAY6a,CAAZ,CAAgBhb,CAAAd,OAAhB,CAA6BiB,CAA7B,CAAiC6a,CAAjC,CAAoC7a,CAAA,EAApC,CACET,CACA,CADMM,CAAA,CAAKG,CAAL,CACN,CAAA,IAAA,CAAKT,CAAL,CAAA,CAAYg7B,CAAA,CAAiBh7B,CAAjB,CANM,CAAtB,IASE,KAAA2wB,MAAA,CAAa,EAGf,KAAAX,UAAA,CAAiBxsB,CAbkC,CAgBrDqsB,GAAAnN,UAAA,CAAuB,CAgBrBuY,WAAYpK,EAhBS,CA8BrBqK,UAAWA,QAAQ,CAACC,CAAD,CAAW,CACxBA,CAAJ,EAAkC,CAAlC,CAAgBA,CAAA37B,OAAhB,EACE8V,CAAAqK,SAAA,CAAkB,IAAAqQ,UAAlB,CAAkCmL,CAAlC,CAF0B,CA9BT,CA+CrBC,aAAcA,QAAQ,CAACD,CAAD,CAAW,CAC3BA,CAAJ,EAAkC,CAAlC,CAAgBA,CAAA37B,OAAhB;AACE8V,CAAAsK,YAAA,CAAqB,IAAAoQ,UAArB,CAAqCmL,CAArC,CAF6B,CA/CZ,CAiErBd,aAAcA,QAAQ,CAACgB,CAAD,CAAa5C,CAAb,CAAyB,CAC7C,IAAI6C,EAAQC,EAAA,CAAgBF,CAAhB,CAA4B5C,CAA5B,CACR6C,EAAJ,EAAaA,CAAA97B,OAAb,EACE8V,CAAAqK,SAAA,CAAkB,IAAAqQ,UAAlB,CAAkCsL,CAAlC,CAIF,EADIE,CACJ,CADeD,EAAA,CAAgB9C,CAAhB,CAA4B4C,CAA5B,CACf,GAAgBG,CAAAh8B,OAAhB,EACE8V,CAAAsK,YAAA,CAAqB,IAAAoQ,UAArB,CAAqCwL,CAArC,CAR2C,CAjE1B,CAsFrB9D,KAAMA,QAAQ,CAAC13B,CAAD,CAAMY,CAAN,CAAa66B,CAAb,CAAwB5P,CAAxB,CAAkC,CAAA,IAK1C9oB,EAAO,IAAAitB,UAAA,CAAe,CAAf,CALmC,CAM1C0L,EAAaxd,EAAA,CAAmBnb,CAAnB,CAAyB/C,CAAzB,CAN6B,CAO1C27B,EAAard,EAAA,CAAmBvb,CAAnB,CAAyB/C,CAAzB,CAP6B,CAQ1C47B,EAAW57B,CAGX07B,EAAJ,EACE,IAAA1L,UAAA/sB,KAAA,CAAoBjD,CAApB,CAAyBY,CAAzB,CACA,CAAAirB,CAAA,CAAW6P,CAFb,EAGWC,CAHX,GAIE,IAAA,CAAKA,CAAL,CACA,CADmB/6B,CACnB,CAAAg7B,CAAA,CAAWD,CALb,CAQA,KAAA,CAAK37B,CAAL,CAAA,CAAYY,CAGRirB,EAAJ,CACE,IAAA8E,MAAA,CAAW3wB,CAAX,CADF,CACoB6rB,CADpB,EAGEA,CAHF,CAGa,IAAA8E,MAAA,CAAW3wB,CAAX,CAHb,IAKI,IAAA2wB,MAAA,CAAW3wB,CAAX,CALJ,CAKsB6rB,CALtB,CAKiC/gB,EAAA,CAAW9K,CAAX,CAAgB,GAAhB,CALjC,CASAgD,EAAA,CAAWO,EAAA,CAAU,IAAAysB,UAAV,CAEX,IAAkB,GAAlB,GAAKhtB,CAAL,EAAiC,MAAjC,GAAyBhD,CAAzB,EACkB,KADlB,GACKgD,CADL,EACmC,KADnC,GAC2BhD,CAD3B,CAGE,IAAA,CAAKA,CAAL,CAAA,CAAYY,CAAZ,CAAoB+O,CAAA,CAAc/O,CAAd,CAA6B,KAA7B,GAAqBZ,CAArB,CAHtB,KAIO,IAAiB,KAAjB,GAAIgD,CAAJ,EAAkC,QAAlC,GAA0BhD,CAA1B,CAA4C,CAejD,IAbIsE,IAAAA;AAAS,EAATA,CAGAu3B,EAAgBnhB,CAAA,CAAK9Z,CAAL,CAHhB0D,CAKAw3B,EAAa,qCALbx3B,CAMA2P,EAAU,IAAA/J,KAAA,CAAU2xB,CAAV,CAAA,CAA2BC,CAA3B,CAAwC,KANlDx3B,CASAy3B,EAAUF,CAAAv4B,MAAA,CAAoB2Q,CAApB,CATV3P,CAYA03B,EAAoB9E,IAAA+E,MAAA,CAAWF,CAAAv8B,OAAX,CAA4B,CAA5B,CAZpB8E,CAaK7D,EAAI,CAAb,CAAgBA,CAAhB,CAAoBu7B,CAApB,CAAuCv7B,CAAA,EAAvC,CACE,IAAIy7B,EAAe,CAAfA,CAAWz7B,CAAf,CAEA6D,EAAAA,CAAAA,CAAUqL,CAAA,CAAc+K,CAAA,CAAKqhB,CAAA,CAAQG,CAAR,CAAL,CAAd,CAAuC,CAAA,CAAvC,CAFV,CAIA53B,EAAAA,CAAAA,EAAW,GAAXA,CAAiBoW,CAAA,CAAKqhB,CAAA,CAAQG,CAAR,CAAmB,CAAnB,CAAL,CAAjB53B,CAIE63B,EAAAA,CAAYzhB,CAAA,CAAKqhB,CAAA,CAAY,CAAZ,CAAQt7B,CAAR,CAAL,CAAA6C,MAAA,CAA2B,IAA3B,CAGhBgB,EAAA,EAAUqL,CAAA,CAAc+K,CAAA,CAAKyhB,CAAA,CAAU,CAAV,CAAL,CAAd,CAAkC,CAAA,CAAlC,CAGe,EAAzB,GAAIA,CAAA38B,OAAJ,GACE8E,CADF,EACa,GADb,CACmBoW,CAAA,CAAKyhB,CAAA,CAAU,CAAV,CAAL,CADnB,CAGA,KAAA,CAAKn8B,CAAL,CAAA,CAAYY,CAAZ,CAAoB0D,CAjC6B,CAoCjC,CAAA,CAAlB,GAAIm3B,CAAJ,GACgB,IAAd,GAAI76B,CAAJ,EAAsBA,CAAtB,GAAgCzB,CAAhC,CACE,IAAA6wB,UAAAoM,WAAA,CAA0BvQ,CAA1B,CADF,CAGE,IAAAmE,UAAA9sB,KAAA,CAAoB2oB,CAApB,CAA8BjrB,CAA9B,CAJJ,CAUA,EADI8zB,CACJ,CADkB,IAAAA,YAClB,GAAe70B,CAAA,CAAQ60B,CAAA,CAAYkH,CAAZ,CAAR,CAA+B,QAAQ,CAAC/1B,CAAD,CAAK,CACzD,GAAI,CACFA,CAAA,CAAGjF,CAAH,CADE,CAEF,MAAOkG,CAAP,CAAU,CACVkP,CAAA,CAAkBlP,CAAlB,CADU,CAH6C,CAA5C,CAnF+B,CAtF3B,CAqMrB2tB,SAAUA,QAAQ,CAACz0B,CAAD,CAAM6F,CAAN,CAAU,CAAA,IACtB8pB,EAAQ,IADc,CAEtB+E,EAAe/E,CAAA+E,YAAfA,GAAqC/E,CAAA+E,YAArCA,CAAyDlnB,EAAA,EAAzDknB,CAFsB,CAGtB2H,EAAa3H,CAAA,CAAY10B,CAAZ,CAAbq8B,GAAkC3H,CAAA,CAAY10B,CAAZ,CAAlCq8B,CAAqD,EAArDA,CAEJA,EAAAh4B,KAAA,CAAewB,CAAf,CACAqR;CAAAvU,WAAA,CAAsB,QAAQ,EAAG,CAC1Bw3B,CAAAkC,CAAAlC,QAAL,EAA0BxK,CAAAzvB,eAAA,CAAqBF,CAArB,CAA1B,EAEE6F,CAAA,CAAG8pB,CAAA,CAAM3vB,CAAN,CAAH,CAH6B,CAAjC,CAOA,OAAO,SAAQ,EAAG,CAChB0D,EAAA,CAAY24B,CAAZ,CAAuBx2B,CAAvB,CADgB,CAbQ,CArMP,CAlB+D,KAqPlFy2B,EAAclmB,CAAAkmB,YAAA,EArPoE,CAsPlFC,GAAYnmB,CAAAmmB,UAAA,EAtPsE,CAuPlF9F,GAAsC,IAAhB,EAAC6F,CAAD,EAAsC,IAAtC,EAAwBC,EAAxB,CAChBv6B,EADgB,CAEhBy0B,QAA4B,CAACnB,CAAD,CAAW,CACvC,MAAOA,EAAAnuB,QAAA,CAAiB,OAAjB,CAA0Bm1B,CAA1B,CAAAn1B,QAAA,CAA+C,KAA/C,CAAsDo1B,EAAtD,CADgC,CAzPqC,CA4PlFnL,EAAkB,cAEtBvnB,EAAA0vB,iBAAA,CAA2BhwB,CAAA,CAAmBgwB,QAAyB,CAAClM,CAAD,CAAWmP,CAAX,CAAoB,CACzF,IAAIlR,EAAW+B,CAAAtjB,KAAA,CAAc,UAAd,CAAXuhB,EAAwC,EAExC1rB,EAAA,CAAQ48B,CAAR,CAAJ,CACElR,CADF,CACaA,CAAA/lB,OAAA,CAAgBi3B,CAAhB,CADb,CAGElR,CAAAjnB,KAAA,CAAcm4B,CAAd,CAGFnP,EAAAtjB,KAAA,CAAc,UAAd,CAA0BuhB,CAA1B,CATyF,CAAhE,CAUvBvpB,CAEJ8H,EAAAwvB,kBAAA,CAA4B9vB,CAAA,CAAmB8vB,QAA0B,CAAChM,CAAD,CAAW,CAClFD,CAAA,CAAaC,CAAb,CAAuB,YAAvB,CADkF,CAAxD,CAExBtrB,CAEJ8H,EAAA6kB,eAAA,CAAyBnlB,CAAA,CAAmBmlB,QAAuB,CAACrB,CAAD,CAAWzjB,CAAX,CAAkB6yB,CAAlB,CAA4BC,CAA5B,CAAwC,CAEzGrP,CAAAtjB,KAAA,CADe0yB,CAAAE,CAAYD,CAAA,CAAa,yBAAb,CAAyC,eAArDC,CAAwE,QACvF;AAAwB/yB,CAAxB,CAFyG,CAAlF,CAGrB7H,CAEJ8H,EAAAkkB,gBAAA,CAA0BxkB,CAAA,CAAmBwkB,QAAwB,CAACV,CAAD,CAAWoP,CAAX,CAAqB,CACxFrP,CAAA,CAAaC,CAAb,CAAuBoP,CAAA,CAAW,kBAAX,CAAgC,UAAvD,CADwF,CAAhE,CAEtB16B,CAEJ,OAAO8H,EAvR+E,CAJ5E,CAzL6C,CAoxD3DgnB,QAASA,GAAkB,CAACnoB,CAAD,CAAO,CAChC,MAAOoQ,GAAA,CAAUpQ,CAAAvB,QAAA,CAAakqB,EAAb,CAA4B,EAA5B,CAAV,CADyB,CAgElCkK,QAASA,GAAe,CAACqB,CAAD,CAAOC,CAAP,CAAa,CAAA,IAC/BC,EAAS,EADsB,CAE/BC,EAAUH,CAAAt5B,MAAA,CAAW,KAAX,CAFqB,CAG/B05B,EAAUH,CAAAv5B,MAAA,CAAW,KAAX,CAHqB,CAM1B7C,EAAI,CADb,EAAA,CACA,IAAA,CAAgBA,CAAhB,CAAoBs8B,CAAAv9B,OAApB,CAAoCiB,CAAA,EAApC,CAAyC,CAEvC,IADA,IAAIw8B,EAAQF,CAAA,CAAQt8B,CAAR,CAAZ,CACSa,EAAI,CAAb,CAAgBA,CAAhB,CAAoB07B,CAAAx9B,OAApB,CAAoC8B,CAAA,EAApC,CACE,GAAI27B,CAAJ,EAAaD,CAAA,CAAQ17B,CAAR,CAAb,CAAyB,SAAS,CAEpCw7B,EAAA,GAA2B,CAAhB,CAAAA,CAAAt9B,OAAA,CAAoB,GAApB,CAA0B,EAArC,EAA2Cy9B,CALJ,CAOzC,MAAOH,EAb4B,CAgBrCpG,QAASA,GAAc,CAACwG,CAAD,CAAU,CAC/BA,CAAA,CAAUv2B,CAAA,CAAOu2B,CAAP,CACV,KAAIz8B,EAAIy8B,CAAA19B,OAER,IAAS,CAAT,EAAIiB,CAAJ,CACE,MAAOy8B,EAGT,KAAA,CAAOz8B,CAAA,EAAP,CAAA,CAxhNsBmxB,CA0hNpB,GADWsL,CAAAn6B,CAAQtC,CAARsC,CACPtD,SAAJ,EACEqE,EAAA3D,KAAA,CAAY+8B,CAAZ,CAAqBz8B,CAArB,CAAwB,CAAxB,CAGJ,OAAOy8B,EAdwB,CA6BjCrnB,QAASA,GAAmB,EAAG,CAAA,IACzB0a,EAAc,EADW,CAEzB4M,EAAU,CAAA,CAFe,CAGzBC,EAAY,yBAWhB,KAAAC,SAAA,CAAgBC,QAAQ,CAAC50B,CAAD,CAAOkE,CAAP,CAAoB,CAC1CC,EAAA,CAAwBnE,CAAxB;AAA8B,YAA9B,CACIrG,EAAA,CAASqG,CAAT,CAAJ,CACExH,CAAA,CAAOqvB,CAAP,CAAoB7nB,CAApB,CADF,CAGE6nB,CAAA,CAAY7nB,CAAZ,CAHF,CAGsBkE,CALoB,CAc5C,KAAA2wB,aAAA,CAAoBC,QAAQ,EAAG,CAC7BL,CAAA,CAAU,CAAA,CADmB,CAK/B,KAAA5d,KAAA,CAAY,CAAC,WAAD,CAAc,SAAd,CAAyB,QAAQ,CAACuD,CAAD,CAAYxK,CAAZ,CAAqB,CAiGhEmlB,QAASA,EAAa,CAACpb,CAAD,CAAS8R,CAAT,CAAqB1R,CAArB,CAA+B/Z,CAA/B,CAAqC,CACzD,GAAM2Z,CAAAA,CAAN,EAAgB,CAAAhgB,CAAA,CAASggB,CAAAqR,OAAT,CAAhB,CACE,KAAMt0B,EAAA,CAAO,aAAP,CAAA,CAAsB,OAAtB,CAEJsJ,CAFI,CAEEyrB,CAFF,CAAN,CAKF9R,CAAAqR,OAAA,CAAcS,CAAd,CAAA,CAA4B1R,CAP6B,CApE3D,MAAO,SAAQ,CAACib,CAAD,CAAarb,CAAb,CAAqBsb,CAArB,CAA4BC,CAA5B,CAAmC,CAAA,IAQ5Cnb,CAR4C,CAQ3B7V,CAR2B,CAQdunB,CAClCwJ,EAAA,CAAkB,CAAA,CAAlB,GAAQA,CACJC,EAAJ,EAAaj+B,CAAA,CAASi+B,CAAT,CAAb,GACEzJ,CADF,CACeyJ,CADf,CAIA,IAAIj+B,CAAA,CAAS+9B,CAAT,CAAJ,CAA0B,CACxBh5B,CAAA,CAAQg5B,CAAAh5B,MAAA,CAAiB04B,CAAjB,CACR,IAAK14B,CAAAA,CAAL,CACE,KAAMm5B,GAAA,CAAkB,SAAlB,CAE8CH,CAF9C,CAAN,CAIF9wB,CAAA,CAAclI,CAAA,CAAM,CAAN,CACdyvB,EADA,CACaA,CADb,EAC2BzvB,CAAA,CAAM,CAAN,CAC3Bg5B,EAAA,CAAanN,CAAArwB,eAAA,CAA2B0M,CAA3B,CAAA,CACP2jB,CAAA,CAAY3jB,CAAZ,CADO,CAEPE,EAAA,CAAOuV,CAAAqR,OAAP,CAAsB9mB,CAAtB,CAAmC,CAAA,CAAnC,CAFO,GAGJuwB,CAAA,CAAUrwB,EAAA,CAAOwL,CAAP,CAAgB1L,CAAhB,CAA6B,CAAA,CAA7B,CAAV,CAA+CzN,CAH3C,CAKbuN,GAAA,CAAYgxB,CAAZ,CAAwB9wB,CAAxB,CAAqC,CAAA,CAArC,CAdwB,CAiB1B,GAAI+wB,CAAJ,CAmBE,MARIG,EAQG,CARmBpb,CAAC9iB,CAAA,CAAQ89B,CAAR,CAAA,CACzBA,CAAA,CAAWA,CAAAl+B,OAAX,CAA+B,CAA/B,CADyB,CACWk+B,CADZhb,WAQnB,CANPD,CAMO,CANIliB,MAAAuB,OAAA,CAAcg8B,CAAd,EAAqC,IAArC,CAMJ,CAJH3J,CAIG,EAHLsJ,CAAA,CAAcpb,CAAd,CAAsB8R,CAAtB,CAAkC1R,CAAlC,CAA4C7V,CAA5C,EAA2D8wB,CAAAh1B,KAA3D,CAGK,CAAAxH,CAAA,CAAO,QAAQ,EAAG,CACvB4hB,CAAApZ,OAAA,CAAiBg0B,CAAjB;AAA6Bjb,CAA7B,CAAuCJ,CAAvC,CAA+CzV,CAA/C,CACA,OAAO6V,EAFgB,CAAlB,CAGJ,CACDA,SAAUA,CADT,CAED0R,WAAYA,CAFX,CAHI,CAST1R,EAAA,CAAWK,CAAAhC,YAAA,CAAsB4c,CAAtB,CAAkCrb,CAAlC,CAA0CzV,CAA1C,CAEPunB,EAAJ,EACEsJ,CAAA,CAAcpb,CAAd,CAAsB8R,CAAtB,CAAkC1R,CAAlC,CAA4C7V,CAA5C,EAA2D8wB,CAAAh1B,KAA3D,CAGF,OAAO+Z,EAjEyC,CA7Bc,CAAtD,CAjCiB,CAuK/B1M,QAASA,GAAiB,EAAG,CAC3B,IAAAwJ,KAAA,CAAY,CAAC,SAAD,CAAY,QAAQ,CAACtgB,CAAD,CAAS,CACvC,MAAO0H,EAAA,CAAO1H,CAAAC,SAAP,CADgC,CAA7B,CADe,CA8C7B+W,QAASA,GAAyB,EAAG,CACnC,IAAAsJ,KAAA,CAAY,CAAC,MAAD,CAAS,QAAQ,CAACzI,CAAD,CAAO,CAClC,MAAO,SAAQ,CAACinB,CAAD,CAAYC,CAAZ,CAAmB,CAChClnB,CAAAyO,MAAAvf,MAAA,CAAiB8Q,CAAjB,CAAuBzV,SAAvB,CADgC,CADA,CAAxB,CADuB,CAiBrC48B,QAASA,GAA4B,CAACl0B,CAAD,CAAOm0B,CAAP,CAAgB,CACnD,GAAIv+B,CAAA,CAASoK,CAAT,CAAJ,CAAoB,CAElB,IAAIo0B,EAAWp0B,CAAA5C,QAAA,CAAai3B,EAAb,CAAqC,EAArC,CAAA1jB,KAAA,EAEf,IAAIyjB,CAAJ,CAAc,CACZ,IAAIE,EAAcH,CAAA,CAAQ,cAAR,CACd,EAAC,CAAD,CAAC,CAAD,EAAC,CAAD,GAAC,CAAA,QAAA,CAAA,EAAA,CAAD,IAWN,CAXM,EAUFI,CAVE,CAAkE78B,CAUxDiD,MAAA,CAAU65B,EAAV,CAVV,GAWcC,EAAA,CAAUF,CAAA,CAAU,CAAV,CAAV,CAAAp0B,KAAA,CAXoDzI,CAWpD,CAXd,CAAA,EAAJ,GACEsI,CADF,CACSxD,EAAA,CAAS43B,CAAT,CADT,CAFY,CAJI,CAYpB,MAAOp0B,EAb4C,CA2BrD00B,QAASA,GAAY,CAACP,CAAD,CAAU,CAAA,IACzBtjB,EAASpN,EAAA,EADgB,CACHxN,CADG,CACEkG,CADF,CACOzF,CAEpC,IAAKy9B,CAAAA,CAAL,CAAc,MAAOtjB,EAErB/a,EAAA,CAAQq+B,CAAA56B,MAAA,CAAc,IAAd,CAAR;AAA6B,QAAQ,CAACo7B,CAAD,CAAO,CAC1Cj+B,CAAA,CAAIi+B,CAAA76B,QAAA,CAAa,GAAb,CACJ7D,EAAA,CAAMyD,CAAA,CAAUiX,CAAA,CAAKgkB,CAAA5W,OAAA,CAAY,CAAZ,CAAernB,CAAf,CAAL,CAAV,CACNyF,EAAA,CAAMwU,CAAA,CAAKgkB,CAAA5W,OAAA,CAAYrnB,CAAZ,CAAgB,CAAhB,CAAL,CAEFT,EAAJ,GACE4a,CAAA,CAAO5a,CAAP,CADF,CACgB4a,CAAA,CAAO5a,CAAP,CAAA,CAAc4a,CAAA,CAAO5a,CAAP,CAAd,CAA4B,IAA5B,CAAmCkG,CAAnC,CAAyCA,CADzD,CAL0C,CAA5C,CAUA,OAAO0U,EAfsB,CA+B/B+jB,QAASA,GAAa,CAACT,CAAD,CAAU,CAC9B,IAAIU,EAAav8B,CAAA,CAAS67B,CAAT,CAAA,CAAoBA,CAApB,CAA8B/+B,CAE/C,OAAO,SAAQ,CAACuJ,CAAD,CAAO,CACfk2B,CAAL,GAAiBA,CAAjB,CAA+BH,EAAA,CAAaP,CAAb,CAA/B,CAEA,OAAIx1B,EAAJ,EACM9H,CAIGA,CAJKg+B,CAAA,CAAWn7B,CAAA,CAAUiF,CAAV,CAAX,CAIL9H,CAHO,IAAK,EAGZA,GAHHA,CAGGA,GAFLA,CAEKA,CAFG,IAEHA,EAAAA,CALT,EAQOg+B,CAXa,CAHQ,CA8BhCC,QAASA,GAAa,CAAC90B,CAAD,CAAOm0B,CAAP,CAAgBY,CAAhB,CAAwBC,CAAxB,CAA6B,CACjD,GAAI9+B,CAAA,CAAW8+B,CAAX,CAAJ,CACE,MAAOA,EAAA,CAAIh1B,CAAJ,CAAUm0B,CAAV,CAAmBY,CAAnB,CAETj/B,EAAA,CAAQk/B,CAAR,CAAa,QAAQ,CAACl5B,CAAD,CAAK,CACxBkE,CAAA,CAAOlE,CAAA,CAAGkE,CAAH,CAASm0B,CAAT,CAAkBY,CAAlB,CADiB,CAA1B,CAIA,OAAO/0B,EAR0C,CAuBnD0M,QAASA,GAAa,EAAG,CA4BvB,IAAIuoB,EAAW,IAAAA,SAAXA,CAA2B,CAE7BC,kBAAmB,CAAChB,EAAD,CAFU,CAK7BiB,iBAAkB,CAAC,QAAQ,CAACC,CAAD,CAAI,CAC7B,MAAO98B,EAAA,CAAS88B,CAAT,CAAA,EAt7PmB,eAs7PnB,GAt7PJ38B,EAAArC,KAAA,CAs7P2Bg/B,CAt7P3B,CAs7PI,EA56PmB,eA46PnB,GA56PJ38B,EAAArC,KAAA,CA46PyCg/B,CA56PzC,CA46PI,EAj7PmB,mBAi7PnB,GAj7PJ38B,EAAArC,KAAA,CAi7P2Dg/B,CAj7P3D,CAi7PI,CAA4Dh5B,EAAA,CAAOg5B,CAAP,CAA5D;AAAwEA,CADlD,CAAb,CALW,CAU7BjB,QAAS,CACPkB,OAAQ,CACN,OAAU,mCADJ,CADD,CAIPxM,KAAQ9tB,EAAA,CAAYu6B,EAAZ,CAJD,CAKPlf,IAAQrb,EAAA,CAAYu6B,EAAZ,CALD,CAMPC,MAAQx6B,EAAA,CAAYu6B,EAAZ,CAND,CAVoB,CAmB7BE,eAAgB,YAnBa,CAoB7BC,eAAgB,cApBa,CAA/B,CAuBIC,EAAgB,CAAA,CAoBpB,KAAAA,cAAA,CAAqBC,QAAQ,CAAC9+B,CAAD,CAAQ,CACnC,MAAIwB,EAAA,CAAUxB,CAAV,CAAJ,EACE6+B,CACO,CADS,CAAE7+B,CAAAA,CACX,CAAA,IAFT,EAIO6+B,CAL4B,CAqBrC,KAAIE,EAAuB,IAAAC,aAAvBD,CAA2C,EAE/C,KAAApgB,KAAA,CAAY,CAAC,cAAD,CAAiB,UAAjB,CAA6B,eAA7B,CAA8C,YAA9C,CAA4D,IAA5D,CAAkE,WAAlE,CACR,QAAQ,CAAC7I,CAAD,CAAelB,CAAf,CAAyBE,CAAzB,CAAwCwB,CAAxC,CAAoDE,CAApD,CAAwD0L,CAAxD,CAAmE,CAshB7EtM,QAASA,EAAK,CAACqpB,CAAD,CAAgB,CAwE5BZ,QAASA,EAAiB,CAACa,CAAD,CAAW,CAEnC,IAAIC,EAAO7+B,CAAA,CAAO,EAAP,CAAW4+B,CAAX,CAITC,EAAAh2B,KAAA,CAHG+1B,CAAA/1B,KAAL,CAGc80B,EAAA,CAAciB,CAAA/1B,KAAd,CAA6B+1B,CAAA5B,QAA7B,CAA+C4B,CAAAhB,OAA/C,CAAgEt2B,CAAAy2B,kBAAhE,CAHd,CACca,CAAA/1B,KAII+0B,EAAAA,CAAAgB,CAAAhB,OAAlB,OA/sBC,IA+sBM,EA/sBCA,CA+sBD,EA/sBoB,GA+sBpB,CA/sBWA,CA+sBX;AACHiB,CADG,CAEH3oB,CAAA4oB,OAAA,CAAUD,CAAV,CAV+B,CAarCE,QAASA,EAAgB,CAAC/B,CAAD,CAAU,CAAA,IAC7BgC,CAD6B,CACdC,EAAmB,EAEtCtgC,EAAA,CAAQq+B,CAAR,CAAiB,QAAQ,CAACkC,CAAD,CAAWC,CAAX,CAAmB,CACtCpgC,CAAA,CAAWmgC,CAAX,CAAJ,EACEF,CACA,CADgBE,CAAA,EAChB,CAAqB,IAArB,EAAIF,CAAJ,GACEC,CAAA,CAAiBE,CAAjB,CADF,CAC6BH,CAD7B,CAFF,EAMEC,CAAA,CAAiBE,CAAjB,CANF,CAM6BD,CAPa,CAA5C,CAWA,OAAOD,EAd0B,CAnFnC,GAAK,CAAAh2B,EAAA9H,SAAA,CAAiBw9B,CAAjB,CAAL,CACE,KAAMzgC,EAAA,CAAO,OAAP,CAAA,CAAgB,QAAhB,CAA0FygC,CAA1F,CAAN,CAGF,IAAIr3B,EAAStH,CAAA,CAAO,CAClBgN,OAAQ,KADU,CAElBgxB,iBAAkBF,CAAAE,iBAFA,CAGlBD,kBAAmBD,CAAAC,kBAHD,CAAP,CAIVY,CAJU,CAMbr3B,EAAA01B,QAAA,CA0FAoC,QAAqB,CAAC93B,CAAD,CAAS,CAAA,IACxB+3B,EAAavB,CAAAd,QADW,CAExBsC,EAAat/B,CAAA,CAAO,EAAP,CAAWsH,CAAA01B,QAAX,CAFW,CAGxBuC,CAHwB,CAGeC,CAHf,CAK5BH,EAAar/B,CAAA,CAAO,EAAP,CAAWq/B,CAAAnB,OAAX,CAA8BmB,CAAA,CAAW98B,CAAA,CAAU+E,CAAA0F,OAAV,CAAX,CAA9B,CAGb,EAAA,CACA,IAAKuyB,CAAL,GAAsBF,EAAtB,CAAkC,CAChCI,CAAA,CAAyBl9B,CAAA,CAAUg9B,CAAV,CAEzB,KAAKC,CAAL,GAAsBF,EAAtB,CACE,GAAI/8B,CAAA,CAAUi9B,CAAV,CAAJ,GAAiCC,CAAjC,CACE,SAAS,CAIbH,EAAA,CAAWC,CAAX,CAAA,CAA4BF,CAAA,CAAWE,CAAX,CATI,CAalC,MAAOR,EAAA,CAAiBO,CAAjB,CAtBqB,CA1Fb,CAAaX,CAAb,CACjBr3B,EAAA0F,OAAA,CAAgBmB,EAAA,CAAU7G,CAAA0F,OAAV,CAuBhB,KAAI0yB,EAAQ,CArBQC,QAAQ,CAACr4B,CAAD,CAAS,CACnC,IAAI01B,EAAU11B,CAAA01B,QAAd,CACI4C,EAAUjC,EAAA,CAAcr2B,CAAAuB,KAAd,CAA2B40B,EAAA,CAAcT,CAAd,CAA3B;AAAmD/+B,CAAnD,CAA8DqJ,CAAA02B,iBAA9D,CAGV/8B,EAAA,CAAY2+B,CAAZ,CAAJ,EACEjhC,CAAA,CAAQq+B,CAAR,CAAiB,QAAQ,CAACt9B,CAAD,CAAQy/B,CAAR,CAAgB,CACb,cAA1B,GAAI58B,CAAA,CAAU48B,CAAV,CAAJ,EACI,OAAOnC,CAAA,CAAQmC,CAAR,CAF4B,CAAzC,CAOEl+B,EAAA,CAAYqG,CAAAu4B,gBAAZ,CAAJ,EAA4C,CAAA5+B,CAAA,CAAY68B,CAAA+B,gBAAZ,CAA5C,GACEv4B,CAAAu4B,gBADF,CAC2B/B,CAAA+B,gBAD3B,CAKA,OAAOC,EAAA,CAAQx4B,CAAR,CAAgBs4B,CAAhB,CAAA3I,KAAA,CAA8B8G,CAA9B,CAAiDA,CAAjD,CAlB4B,CAqBzB,CAAgB9/B,CAAhB,CAAZ,CACI8hC,EAAU7pB,CAAA8pB,KAAA,CAAQ14B,CAAR,CAYd,KATA3I,CAAA,CAAQshC,CAAR,CAA8B,QAAQ,CAACC,CAAD,CAAc,CAClD,CAAIA,CAAAC,QAAJ,EAA2BD,CAAAE,aAA3B,GACEV,CAAAv3B,QAAA,CAAc+3B,CAAAC,QAAd,CAAmCD,CAAAE,aAAnC,CAEF,EAAIF,CAAAtB,SAAJ,EAA4BsB,CAAAG,cAA5B,GACEX,CAAAv8B,KAAA,CAAW+8B,CAAAtB,SAAX,CAAiCsB,CAAAG,cAAjC,CALgD,CAApD,CASA,CAAOX,CAAAphC,OAAP,CAAA,CAAqB,CACfgiC,CAAAA,CAASZ,CAAAxe,MAAA,EACb,KAAIqf,EAAWb,CAAAxe,MAAA,EAAf,CAEA6e,EAAUA,CAAA9I,KAAA,CAAaqJ,CAAb,CAAqBC,CAArB,CAJS,CAOrBR,CAAAS,QAAA,CAAkBC,QAAQ,CAAC97B,CAAD,CAAK,CAC7Bo7B,CAAA9I,KAAA,CAAa,QAAQ,CAAC2H,CAAD,CAAW,CAC9Bj6B,CAAA,CAAGi6B,CAAA/1B,KAAH,CAAkB+1B,CAAAhB,OAAlB,CAAmCgB,CAAA5B,QAAnC,CAAqD11B,CAArD,CAD8B,CAAhC,CAGA,OAAOy4B,EAJsB,CAO/BA,EAAA1b,MAAA;AAAgBqc,QAAQ,CAAC/7B,CAAD,CAAK,CAC3Bo7B,CAAA9I,KAAA,CAAa,IAAb,CAAmB,QAAQ,CAAC2H,CAAD,CAAW,CACpCj6B,CAAA,CAAGi6B,CAAA/1B,KAAH,CAAkB+1B,CAAAhB,OAAlB,CAAmCgB,CAAA5B,QAAnC,CAAqD11B,CAArD,CADoC,CAAtC,CAGA,OAAOy4B,EAJoB,CAO7B,OAAOA,EAtEqB,CA2Q9BD,QAASA,EAAO,CAACx4B,CAAD,CAASs4B,CAAT,CAAkB,CA+DhCe,QAASA,EAAI,CAAC/C,CAAD,CAASgB,CAAT,CAAmBgC,CAAnB,CAAkCC,CAAlC,CAA8C,CAUzDC,QAASA,EAAkB,EAAG,CAC5BC,CAAA,CAAenC,CAAf,CAAyBhB,CAAzB,CAAiCgD,CAAjC,CAAgDC,CAAhD,CAD4B,CAT1BjgB,CAAJ,GA18BC,GA28BC,EAAcgd,CAAd,EA38ByB,GA28BzB,CAAcA,CAAd,CACEhd,CAAA3B,IAAA,CAAUmG,CAAV,CAAe,CAACwY,CAAD,CAASgB,CAAT,CAAmBrB,EAAA,CAAaqD,CAAb,CAAnB,CAAgDC,CAAhD,CAAf,CADF,CAIEjgB,CAAA8I,OAAA,CAAatE,CAAb,CALJ,CAaImZ,EAAJ,CACEvoB,CAAAgrB,YAAA,CAAuBF,CAAvB,CADF,EAGEA,CAAA,EACA,CAAK9qB,CAAAirB,QAAL,EAAyBjrB,CAAApN,OAAA,EAJ3B,CAdyD,CA0B3Dm4B,QAASA,EAAc,CAACnC,CAAD,CAAWhB,CAAX,CAAmBZ,CAAnB,CAA4B6D,CAA5B,CAAwC,CAE7DjD,CAAA,CAAS5H,IAAAC,IAAA,CAAS2H,CAAT,CAAiB,CAAjB,CAET,EAv+BC,GAu+BA,EAAUA,CAAV,EAv+B0B,GAu+B1B,CAAUA,CAAV,CAAoBsD,CAAAC,QAApB,CAAuCD,CAAApC,OAAxC,EAAyD,CACvDj2B,KAAM+1B,CADiD,CAEvDhB,OAAQA,CAF+C,CAGvDZ,QAASS,EAAA,CAAcT,CAAd,CAH8C,CAIvD11B,OAAQA,CAJ+C,CAKvDu5B,WAAYA,CAL2C,CAAzD,CAJ6D,CAa/DO,QAASA,EAAwB,CAACh+B,CAAD,CAAS,CACxC29B,CAAA,CAAe39B,CAAAyF,KAAf,CAA4BzF,CAAAw6B,OAA5B,CAA2Ch6B,EAAA,CAAYR,CAAA45B,QAAA,EAAZ,CAA3C,CAA0E55B,CAAAy9B,WAA1E,CADwC,CAI1CQ,QAASA,EAAgB,EAAG,CAC1B,IAAIpT,EAAM3Y,CAAAgsB,gBAAA3+B,QAAA,CAA8B2E,CAA9B,CACG,GAAb,GAAI2mB,CAAJ,EAAgB3Y,CAAAgsB,gBAAA1+B,OAAA,CAA6BqrB,CAA7B;AAAkC,CAAlC,CAFU,CA1GI,IAC5BiT,EAAWhrB,CAAA4R,MAAA,EADiB,CAE5BiY,EAAUmB,CAAAnB,QAFkB,CAG5Bnf,CAH4B,CAI5B2gB,CAJ4B,CAK5BjC,EAAah4B,CAAA01B,QALe,CAM5B5X,EAAMoc,CAAA,CAASl6B,CAAA8d,IAAT,CAAqB9d,CAAAm6B,OAArB,CAEVnsB,EAAAgsB,gBAAAn+B,KAAA,CAA2BmE,CAA3B,CACAy4B,EAAA9I,KAAA,CAAaoK,CAAb,CAA+BA,CAA/B,CAGKzgB,EAAAtZ,CAAAsZ,MAAL,EAAqBA,CAAAkd,CAAAld,MAArB,EAAyD,CAAA,CAAzD,GAAwCtZ,CAAAsZ,MAAxC,EACuB,KADvB,GACKtZ,CAAA0F,OADL,EACkD,OADlD,GACgC1F,CAAA0F,OADhC,GAEE4T,CAFF,CAEUzf,CAAA,CAASmG,CAAAsZ,MAAT,CAAA,CAAyBtZ,CAAAsZ,MAAzB,CACAzf,CAAA,CAAS28B,CAAAld,MAAT,CAAA,CAA2Bkd,CAAAld,MAA3B,CACA8gB,CAJV,CAOI9gB,EAAJ,GACE2gB,CACA,CADa3gB,CAAAjX,IAAA,CAAUyb,CAAV,CACb,CAAIlkB,CAAA,CAAUqgC,CAAV,CAAJ,CACoBA,CAAlB,EAtxRMxiC,CAAA,CAsxRYwiC,CAtxRDtK,KAAX,CAsxRN,CAEEsK,CAAAtK,KAAA,CAAgBmK,CAAhB,CAA0CA,CAA1C,CAFF,CAKM1iC,CAAA,CAAQ6iC,CAAR,CAAJ,CACER,CAAA,CAAeQ,CAAA,CAAW,CAAX,CAAf,CAA8BA,CAAA,CAAW,CAAX,CAA9B,CAA6C39B,EAAA,CAAY29B,CAAA,CAAW,CAAX,CAAZ,CAA7C,CAAyEA,CAAA,CAAW,CAAX,CAAzE,CADF,CAGER,CAAA,CAAeQ,CAAf,CAA2B,GAA3B,CAAgC,EAAhC,CAAoC,IAApC,CATN,CAcE3gB,CAAA3B,IAAA,CAAUmG,CAAV,CAAe2a,CAAf,CAhBJ,CAuBI9+B,EAAA,CAAYsgC,CAAZ,CAAJ,GAQE,CAPII,CAOJ,CAPgBC,EAAA,CAAgBt6B,CAAA8d,IAAhB,CAAA,CACV9Q,CAAAiT,QAAA,EAAA,CAAmBjgB,CAAA+2B,eAAnB,EAA4CP,CAAAO,eAA5C,CADU,CAEVpgC,CAKN,IAHEqhC,CAAA,CAAYh4B,CAAAg3B,eAAZ,EAAqCR,CAAAQ,eAArC,CAGF,CAHmEqD,CAGnE,EAAAnsB,CAAA,CAAalO,CAAA0F,OAAb,CAA4BoY,CAA5B,CAAiCwa,CAAjC,CAA0Ce,CAA1C,CAAgDrB,CAAhD,CAA4Dh4B,CAAAu6B,QAA5D,CACIv6B,CAAAu4B,gBADJ,CAC4Bv4B,CAAAw6B,aAD5B,CARF,CAYA;MAAO/B,EAtDyB,CAiHlCyB,QAASA,EAAQ,CAACpc,CAAD,CAAMqc,CAAN,CAAc,CAC7B,GAAKA,CAAAA,CAAL,CAAa,MAAOrc,EACpB,KAAI5e,EAAQ,EACZrH,GAAA,CAAcsiC,CAAd,CAAsB,QAAQ,CAAC/hC,CAAD,CAAQZ,CAAR,CAAa,CAC3B,IAAd,GAAIY,CAAJ,EAAsBuB,CAAA,CAAYvB,CAAZ,CAAtB,GACKhB,CAAA,CAAQgB,CAAR,CAEL,GAFqBA,CAErB,CAF6B,CAACA,CAAD,CAE7B,EAAAf,CAAA,CAAQe,CAAR,CAAe,QAAQ,CAACqiC,CAAD,CAAI,CACrB5gC,CAAA,CAAS4gC,CAAT,CAAJ,GAEIA,CAFJ,CACM1gC,EAAA,CAAO0gC,CAAP,CAAJ,CACMA,CAAAC,YAAA,EADN,CAGM/8B,EAAA,CAAO88B,CAAP,CAJR,CAOAv7B,EAAArD,KAAA,CAAWuD,EAAA,CAAe5H,CAAf,CAAX,CAAiC,GAAjC,CACW4H,EAAA,CAAeq7B,CAAf,CADX,CARyB,CAA3B,CAHA,CADyC,CAA3C,CAgBmB,EAAnB,CAAIv7B,CAAAlI,OAAJ,GACE8mB,CADF,GACgC,EAAtB,EAACA,CAAAziB,QAAA,CAAY,GAAZ,CAAD,CAA2B,GAA3B,CAAiC,GAD3C,EACkD6D,CAAAG,KAAA,CAAW,GAAX,CADlD,CAGA,OAAOye,EAtBsB,CAh5B/B,IAAIsc,EAAeltB,CAAA,CAAc,OAAd,CAAnB,CAOIyrB,EAAuB,EAE3BthC,EAAA,CAAQ8/B,CAAR,CAA8B,QAAQ,CAACwD,CAAD,CAAqB,CACzDhC,CAAA93B,QAAA,CAA6B1J,CAAA,CAASwjC,CAAT,CAAA,CACvBrgB,CAAAjY,IAAA,CAAcs4B,CAAd,CADuB,CACargB,CAAApZ,OAAA,CAAiBy5B,CAAjB,CAD1C,CADyD,CAA3D,CA2oBA3sB,EAAAgsB,gBAAA,CAAwB,EA4GxBY,UAA2B,CAAC/lB,CAAD,CAAQ,CACjCxd,CAAA,CAAQwB,SAAR,CAAmB,QAAQ,CAACqH,CAAD,CAAO,CAChC8N,CAAA,CAAM9N,CAAN,CAAA,CAAc,QAAQ,CAAC4d,CAAD,CAAM9d,CAAN,CAAc,CAClC,MAAOgO,EAAA,CAAMtV,CAAA,CAAOsH,CAAP,EAAiB,EAAjB,CAAqB,CAChC0F,OAAQxF,CADwB,CAEhC4d,IAAKA,CAF2B,CAArB,CAAN,CAD2B,CADJ,CAAlC,CADiC,CAAnC8c,CA1DA,CAAmB,KAAnB,CAA0B,QAA1B,CAAoC,MAApC,CAA4C,OAA5C,CAsEAC,UAAmC,CAAC36B,CAAD,CAAO,CACxC7I,CAAA,CAAQwB,SAAR,CAAmB,QAAQ,CAACqH,CAAD,CAAO,CAChC8N,CAAA,CAAM9N,CAAN,CAAA;AAAc,QAAQ,CAAC4d,CAAD,CAAMvc,CAAN,CAAYvB,CAAZ,CAAoB,CACxC,MAAOgO,EAAA,CAAMtV,CAAA,CAAOsH,CAAP,EAAiB,EAAjB,CAAqB,CAChC0F,OAAQxF,CADwB,CAEhC4d,IAAKA,CAF2B,CAGhCvc,KAAMA,CAH0B,CAArB,CAAN,CADiC,CADV,CAAlC,CADwC,CAA1Cs5B,CA9BA,CAA2B,MAA3B,CAAmC,KAAnC,CAA0C,OAA1C,CAYA7sB,EAAAwoB,SAAA,CAAiBA,CAGjB,OAAOxoB,EA/vBsE,CADnE,CA9FW,CA4gCzB8sB,QAASA,GAAS,EAAG,CACjB,MAAO,KAAIrkC,CAAAskC,eADM,CAoBrB5sB,QAASA,GAAoB,EAAG,CAC9B,IAAA4I,KAAA,CAAY,CAAC,UAAD,CAAa,SAAb,CAAwB,WAAxB,CAAqC,QAAQ,CAAC/J,CAAD,CAAW8C,CAAX,CAAoBxC,CAApB,CAA+B,CACtF,MAAO0tB,GAAA,CAAkBhuB,CAAlB,CAA4B8tB,EAA5B,CAAuC9tB,CAAAwT,MAAvC,CAAuD1Q,CAAAnO,QAAAs5B,UAAvD,CAAkF3tB,CAAA,CAAU,CAAV,CAAlF,CAD+E,CAA5E,CADkB,CAMhC0tB,QAASA,GAAiB,CAAChuB,CAAD,CAAW8tB,CAAX,CAAsBI,CAAtB,CAAqCD,CAArC,CAAgD9c,CAAhD,CAA6D,CA8GrFgd,QAASA,EAAQ,CAACrd,CAAD,CAAMsd,CAAN,CAAkB/B,CAAlB,CAAwB,CAAA,IAInCxxB,EAASsW,CAAA/M,cAAA,CAA0B,QAA1B,CAJ0B,CAIWwN,EAAW,IAC7D/W,EAAAmL,KAAA,CAAc,iBACdnL,EAAAtL,IAAA,CAAauhB,CACbjW,EAAAwzB,MAAA,CAAe,CAAA,CAEfzc,EAAA,CAAWA,QAAQ,CAAC1I,CAAD,CAAQ,CACHrO,CAx1OtByL,oBAAA,CAw1O8BN,MAx1O9B,CAw1OsC4L,CAx1OtC,CAAsC,CAAA,CAAtC,CAy1OsB/W,EAz1OtByL,oBAAA,CAy1O8BN,OAz1O9B,CAy1OuC4L,CAz1OvC,CAAsC,CAAA,CAAtC,CA01OAT,EAAAmd,KAAApmB,YAAA,CAA6BrN,CAA7B,CACAA;CAAA,CAAS,IACT,KAAIyuB,EAAU,EAAd,CACI/F,EAAO,SAEPra,EAAJ,GACqB,MAInB,GAJIA,CAAAlD,KAIJ,EAJ8BioB,CAAA,CAAUG,CAAV,CAAAG,OAI9B,GAHErlB,CAGF,CAHU,CAAElD,KAAM,OAAR,CAGV,EADAud,CACA,CADOra,CAAAlD,KACP,CAAAsjB,CAAA,CAAwB,OAAf,GAAApgB,CAAAlD,KAAA,CAAyB,GAAzB,CAA+B,GAL1C,CAQIqmB,EAAJ,EACEA,CAAA,CAAK/C,CAAL,CAAa/F,CAAb,CAjBuB,CAqBR1oB,EA/2OjB2zB,iBAAA,CA+2OyBxoB,MA/2OzB,CA+2OiC4L,CA/2OjC,CAAmC,CAAA,CAAnC,CAg3OiB/W,EAh3OjB2zB,iBAAA,CAg3OyBxoB,OAh3OzB,CAg3OkC4L,CAh3OlC,CAAmC,CAAA,CAAnC,CAi3OFT,EAAAmd,KAAAnqB,YAAA,CAA6BtJ,CAA7B,CACA,OAAO+W,EAjCgC,CA5GzC,MAAO,SAAQ,CAAClZ,CAAD,CAASoY,CAAT,CAAcsM,CAAd,CAAoBxL,CAApB,CAA8B8W,CAA9B,CAAuC6E,CAAvC,CAAgDhC,CAAhD,CAAiEiC,CAAjE,CAA+E,CA2F5FiB,QAASA,EAAc,EAAG,CACxBC,CAAA,EAAaA,CAAA,EACbC,EAAA,EAAOA,CAAAC,MAAA,EAFiB,CAK1BC,QAASA,EAAe,CAACjd,CAAD,CAAW0X,CAAX,CAAmBgB,CAAnB,CAA6BgC,CAA7B,CAA4CC,CAA5C,CAAwD,CAE1E5Y,CAAJ,GAAkBhqB,CAAlB,EACEukC,CAAAta,OAAA,CAAqBD,CAArB,CAEF+a,EAAA,CAAYC,CAAZ,CAAkB,IAElB/c,EAAA,CAAS0X,CAAT,CAAiBgB,CAAjB,CAA2BgC,CAA3B,CAA0CC,CAA1C,CACAvsB,EAAAuR,6BAAA,CAAsChlB,CAAtC,CAR8E,CA/FhFyT,CAAAwR,6BAAA,EACAV,EAAA,CAAMA,CAAN,EAAa9Q,CAAA8Q,IAAA,EAEb,IAAyB,OAAzB,EAAI7iB,CAAA,CAAUyK,CAAV,CAAJ,CAAkC,CAChC,IAAI01B,EAAa,GAAbA,CAAmBphC,CAACihC,CAAAn0B,QAAA,EAAD9M,UAAA,CAA+B,EAA/B,CACvBihC,EAAA,CAAUG,CAAV,CAAA,CAAwB,QAAQ,CAAC75B,CAAD,CAAO,CACrC05B,CAAA,CAAUG,CAAV,CAAA75B,KAAA;AAA6BA,CAC7B05B,EAAA,CAAUG,CAAV,CAAAG,OAAA,CAA+B,CAAA,CAFM,CAKvC,KAAIG,EAAYP,CAAA,CAASrd,CAAAnf,QAAA,CAAY,eAAZ,CAA6B,oBAA7B,CAAoDy8B,CAApD,CAAT,CACZA,CADY,CACA,QAAQ,CAAC9E,CAAD,CAAS/F,CAAT,CAAe,CACrCsL,CAAA,CAAgBjd,CAAhB,CAA0B0X,CAA1B,CAAkC2E,CAAA,CAAUG,CAAV,CAAA75B,KAAlC,CAA8D,EAA9D,CAAkEgvB,CAAlE,CACA0K,EAAA,CAAUG,CAAV,CAAA,CAAwB7hC,CAFa,CADvB,CAPgB,CAAlC,IAYO,CAEL,IAAIoiC,EAAMb,CAAA,EAEVa,EAAAG,KAAA,CAASp2B,CAAT,CAAiBoY,CAAjB,CAAsB,CAAA,CAAtB,CACAzmB,EAAA,CAAQq+B,CAAR,CAAiB,QAAQ,CAACt9B,CAAD,CAAQZ,CAAR,CAAa,CAChCoC,CAAA,CAAUxB,CAAV,CAAJ,EACIujC,CAAAI,iBAAA,CAAqBvkC,CAArB,CAA0BY,CAA1B,CAFgC,CAAtC,CAMAujC,EAAAK,OAAA,CAAaC,QAAsB,EAAG,CACpC,IAAI1C,EAAaoC,CAAApC,WAAbA,EAA+B,EAAnC,CAIIjC,EAAY,UAAD,EAAeqE,EAAf,CAAsBA,CAAArE,SAAtB,CAAqCqE,CAAAO,aAJpD,CAOI5F,EAAwB,IAAf,GAAAqF,CAAArF,OAAA,CAAsB,GAAtB,CAA4BqF,CAAArF,OAK1B,EAAf,GAAIA,CAAJ,GACEA,CADF,CACWgB,CAAA,CAAW,GAAX,CAA6C,MAA5B,EAAA6E,EAAA,CAAWre,CAAX,CAAAse,SAAA,CAAqC,GAArC,CAA2C,CADvE,CAIAP,EAAA,CAAgBjd,CAAhB,CACI0X,CADJ,CAEIgB,CAFJ,CAGIqE,CAAAU,sBAAA,EAHJ,CAII9C,CAJJ,CAjBoC,CAwBlCT,EAAAA,CAAeA,QAAQ,EAAG,CAG5B+C,CAAA,CAAgBjd,CAAhB,CAA2B,EAA3B,CAA8B,IAA9B,CAAoC,IAApC,CAA0C,EAA1C,CAH4B,CAM9B+c,EAAAW,QAAA,CAAcxD,CACd6C,EAAAY,QAAA,CAAczD,CAEVP,EAAJ,GACEoD,CAAApD,gBADF,CACwB,CAAA,CADxB,CAIA,IAAIiC,CAAJ,CACE,GAAI,CACFmB,CAAAnB,aAAA;AAAmBA,CADjB,CAEF,MAAOl8B,CAAP,CAAU,CAQV,GAAqB,MAArB,GAAIk8B,CAAJ,CACE,KAAMl8B,EAAN,CATQ,CAcdq9B,CAAAa,KAAA,CAASpS,CAAT,EAAiB,IAAjB,CAjEK,CAoEP,GAAc,CAAd,CAAImQ,CAAJ,CACE,IAAI5Z,EAAYua,CAAA,CAAcO,CAAd,CAA8BlB,CAA9B,CADlB,KAEyBA,EAAlB,EA9/RK9iC,CAAA,CA8/Ra8iC,CA9/RF5K,KAAX,CA8/RL,EACL4K,CAAA5K,KAAA,CAAa8L,CAAb,CAvF0F,CAFT,CAwLvF5tB,QAASA,GAAoB,EAAG,CAC9B,IAAIimB,EAAc,IAAlB,CACIC,EAAY,IAWhB,KAAAD,YAAA,CAAmB2I,QAAQ,CAACrkC,CAAD,CAAQ,CACjC,MAAIA,EAAJ,EACE07B,CACO,CADO17B,CACP,CAAA,IAFT,EAIS07B,CALwB,CAkBnC,KAAAC,UAAA,CAAiB2I,QAAQ,CAACtkC,CAAD,CAAQ,CAC/B,MAAIA,EAAJ,EACE27B,CACO,CADK37B,CACL,CAAA,IAFT,EAIS27B,CALsB,CAUjC,KAAAhd,KAAA,CAAY,CAAC,QAAD,CAAW,mBAAX,CAAgC,MAAhC,CAAwC,QAAQ,CAACvI,CAAD,CAAShB,CAAT,CAA4BwB,CAA5B,CAAkC,CAM5F2tB,QAASA,EAAM,CAACC,CAAD,CAAK,CAClB,MAAO,QAAP,CAAkBA,CADA,CAkGpBhvB,QAASA,EAAY,CAAC2iB,CAAD,CAAOsM,CAAP,CAA2BrL,CAA3B,CAA2CD,CAA3C,CAAyD,CAgH5EuL,QAASA,EAAY,CAACvM,CAAD,CAAO,CAC1B,MAAOA,EAAA5xB,QAAA,CAAao+B,CAAb,CAAiCjJ,CAAjC,CAAAn1B,QAAA,CACGq+B,CADH,CACqBjJ,CADrB,CADmB,CAK5BkJ,QAASA,EAAyB,CAAC7kC,CAAD,CAAQ,CACxC,GAAI,CACeA,IAAAA,EAAAA,CA/DjB,EAAA,CAAOo5B,CAAA,CACLxiB,CAAAkuB,WAAA,CAAgB1L,CAAhB,CAAgCp5B,CAAhC,CADK,CAEL4W,CAAAmuB,QAAA,CAAa/kC,CAAb,CA8DK,KAAA,CAAA,IAAAm5B,CAAA,EAAiB,CAAA33B,CAAA,CAAUxB,CAAV,CAAjB,CAAoCA,CAAAA,CAAAA,CAApC,KA1DP,IAAa,IAAb,EAAIA,CAAJ,CACE,CAAA,CAAO,EADT;IAAA,CAGA,OAAQ,MAAOA,EAAf,EACE,KAAK,QAAL,CACE,KACF,MAAK,QAAL,CACEA,CAAA,CAAQ,EAAR,CAAaA,CACb,MACF,SACEA,CAAA,CAAQuF,EAAA,CAAOvF,CAAP,CAPZ,CAUA,CAAA,CAAOA,CAbP,CA0DA,MAAO,EAFL,CAGF,MAAOuhB,CAAP,CAAY,CACRyjB,CAEJ,CAFaC,EAAA,CAAmB,QAAnB,CAA4D9M,CAA5D,CACX5W,CAAA3f,SAAA,EADW,CAEb,CAAAwT,CAAA,CAAkB4vB,CAAlB,CAHY,CAJ0B,CApH1C7L,CAAA,CAAe,CAAEA,CAAAA,CAWjB,KAZ4E,IAExEh0B,CAFwE,CAGxE+/B,CAHwE,CAIxEliC,EAAQ,CAJgE,CAKxE41B,EAAc,EAL0D,CAMxEuM,EAAW,EAN6D,CAOxEC,EAAajN,CAAAv5B,OAP2D,CASxE+F,EAAS,EAT+D,CAUxE0gC,EAAsB,EAE1B,CAAOriC,CAAP,CAAeoiC,CAAf,CAAA,CACE,GAAyD,EAAzD,GAAMjgC,CAAN,CAAmBgzB,CAAAl1B,QAAA,CAAay4B,CAAb,CAA0B14B,CAA1B,CAAnB,GAC+E,EAD/E,GACOkiC,CADP,CACkB/M,CAAAl1B,QAAA,CAAa04B,CAAb,CAAwBx2B,CAAxB,CAAqCmgC,CAArC,CADlB,EAEMtiC,CAQJ,GARcmC,CAQd,EAPER,CAAAlB,KAAA,CAAYihC,CAAA,CAAavM,CAAAhQ,UAAA,CAAenlB,CAAf,CAAsBmC,CAAtB,CAAb,CAAZ,CAOF,CALAogC,CAKA,CALMpN,CAAAhQ,UAAA,CAAehjB,CAAf,CAA4BmgC,CAA5B,CAA+CJ,CAA/C,CAKN,CAJAtM,CAAAn1B,KAAA,CAAiB8hC,CAAjB,CAIA,CAHAJ,CAAA1hC,KAAA,CAAc2S,CAAA,CAAOmvB,CAAP,CAAYV,CAAZ,CAAd,CAGA,CAFA7hC,CAEA,CAFQkiC,CAER,CAFmBM,CAEnB,CADAH,CAAA5hC,KAAA,CAAyBkB,CAAA/F,OAAzB,CACA,CAAA+F,CAAAlB,KAAA,CAAY,EAAZ,CAVF,KAWO,CAEDT,CAAJ,GAAcoiC,CAAd,EACEzgC,CAAAlB,KAAA,CAAYihC,CAAA,CAAavM,CAAAhQ,UAAA,CAAenlB,CAAf,CAAb,CAAZ,CAEF,MALK,CAeT,GAAIo2B,CAAJ,EAAsC,CAAtC,CAAsBz0B,CAAA/F,OAAtB,CACI,KAAMqmC,GAAA,CAAmB,UAAnB,CAGsD9M,CAHtD,CAAN,CAMJ,GAAKsM,CAAAA,CAAL,EAA2B7L,CAAAh6B,OAA3B,CAA+C,CAC7C,IAAI6mC,EAAUA,QAAQ,CAACvJ,CAAD,CAAS,CAC7B,IAD6B,IACpBr8B,EAAI,CADgB,CACbW;AAAKo4B,CAAAh6B,OAArB,CAAyCiB,CAAzC,CAA6CW,CAA7C,CAAiDX,CAAA,EAAjD,CAAsD,CACpD,GAAIs5B,CAAJ,EAAoB53B,CAAA,CAAY26B,CAAA,CAAOr8B,CAAP,CAAZ,CAApB,CAA4C,MAC5C8E,EAAA,CAAO0gC,CAAA,CAAoBxlC,CAApB,CAAP,CAAA,CAAiCq8B,CAAA,CAAOr8B,CAAP,CAFmB,CAItD,MAAO8E,EAAAsC,KAAA,CAAY,EAAZ,CALsB,CA+B/B,OAAO3G,EAAA,CAAOolC,QAAwB,CAACvmC,CAAD,CAAU,CAC5C,IAAIU,EAAI,CAAR,CACIW,EAAKo4B,CAAAh6B,OADT,CAEIs9B,EAAalZ,KAAJ,CAAUxiB,CAAV,CAEb,IAAI,CACF,IAAA,CAAOX,CAAP,CAAWW,CAAX,CAAeX,CAAA,EAAf,CACEq8B,CAAA,CAAOr8B,CAAP,CAAA,CAAYslC,CAAA,CAAStlC,CAAT,CAAA,CAAYV,CAAZ,CAGd,OAAOsmC,EAAA,CAAQvJ,CAAR,CALL,CAMF,MAAO3a,CAAP,CAAY,CACRyjB,CAEJ,CAFaC,EAAA,CAAmB,QAAnB,CAA4D9M,CAA5D,CACT5W,CAAA3f,SAAA,EADS,CAEb,CAAAwT,CAAA,CAAkB4vB,CAAlB,CAHY,CAX8B,CAAzC,CAiBF,CAEHO,IAAKpN,CAFF,CAGHS,YAAaA,CAHV,CAIH+M,gBAAiBA,QAAQ,CAAC38B,CAAD,CAAQ6c,CAAR,CAAkB+f,CAAlB,CAAkC,CACzD,IAAInS,CACJ,OAAOzqB,EAAA68B,YAAA,CAAkBV,CAAlB,CAA4BW,QAA6B,CAAC5J,CAAD,CAAS6J,CAAT,CAAoB,CAClF,IAAIC,EAAYP,CAAA,CAAQvJ,CAAR,CACZ78B,EAAA,CAAWwmB,CAAX,CAAJ,EACEA,CAAAtmB,KAAA,CAAc,IAAd,CAAoBymC,CAApB,CAA+B9J,CAAA,GAAW6J,CAAX,CAAuBtS,CAAvB,CAAmCuS,CAAlE,CAA6Eh9B,CAA7E,CAEFyqB,EAAA,CAAYuS,CALsE,CAA7E,CAMJJ,CANI,CAFkD,CAJxD,CAjBE,CAhCsC,CA9C6B,CAxGc,IACxFN,EAAoB5J,CAAA98B,OADoE,CAExF4mC,EAAkB7J,CAAA/8B,OAFsE,CAGxF+lC,EAAqB,IAAI9gC,MAAJ,CAAW63B,CAAAn1B,QAAA,CAAoB,IAApB,CAA0Bg+B,CAA1B,CAAX,CAA8C,GAA9C,CAHmE,CAIxFK,EAAmB,IAAI/gC,MAAJ,CAAW83B,CAAAp1B,QAAA,CAAkB,IAAlB,CAAwBg+B,CAAxB,CAAX,CAA4C,GAA5C,CAiPvB/uB,EAAAkmB,YAAA,CAA2BuK,QAAQ,EAAG,CACpC,MAAOvK,EAD6B,CAgBtClmB,EAAAmmB,UAAA;AAAyBuK,QAAQ,EAAG,CAClC,MAAOvK,EAD2B,CAIpC,OAAOnmB,EAzQqF,CAAlF,CAzCkB,CAsThCG,QAASA,GAAiB,EAAG,CAC3B,IAAAgJ,KAAA,CAAY,CAAC,YAAD,CAAe,SAAf,CAA0B,IAA1B,CAAgC,KAAhC,CACP,QAAQ,CAACrI,CAAD,CAAeoB,CAAf,CAA0BlB,CAA1B,CAAgCE,CAAhC,CAAqC,CAgIhDmO,QAASA,EAAQ,CAAC5f,CAAD,CAAKqjB,CAAL,CAAY6d,CAAZ,CAAmBC,CAAnB,CAAgC,CAAA,IAC3CC,EAAc3uB,CAAA2uB,YAD6B,CAE3CC,EAAgB5uB,CAAA4uB,cAF2B,CAG3CC,EAAY,CAH+B,CAI3CC,EAAahlC,CAAA,CAAU4kC,CAAV,CAAbI,EAAuC,CAACJ,CAJG,CAK3C5E,EAAWpZ,CAACoe,CAAA,CAAY9vB,CAAZ,CAAkBF,CAAnB4R,OAAA,EALgC,CAM3CiY,EAAUmB,CAAAnB,QAEd8F,EAAA,CAAQ3kC,CAAA,CAAU2kC,CAAV,CAAA,CAAmBA,CAAnB,CAA2B,CAEnC9F,EAAA9I,KAAA,CAAa,IAAb,CAAmB,IAAnB,CAAyBtyB,CAAzB,CAEAo7B,EAAAoG,aAAA,CAAuBJ,CAAA,CAAYK,QAAa,EAAG,CACjDlF,CAAAmF,OAAA,CAAgBJ,CAAA,EAAhB,CAEY,EAAZ,CAAIJ,CAAJ,EAAiBI,CAAjB,EAA8BJ,CAA9B,GACE3E,CAAAC,QAAA,CAAiB8E,CAAjB,CAEA,CADAD,CAAA,CAAcjG,CAAAoG,aAAd,CACA,CAAA,OAAOG,CAAA,CAAUvG,CAAAoG,aAAV,CAHT,CAMKD,EAAL,EAAgBlwB,CAAApN,OAAA,EATiC,CAA5B,CAWpBof,CAXoB,CAavBse,EAAA,CAAUvG,CAAAoG,aAAV,CAAA,CAAkCjF,CAElC,OAAOnB,EA3BwC,CA/HjD,IAAIuG,EAAY,EAwKhB/hB,EAAA2D,OAAA,CAAkBqe,QAAQ,CAACxG,CAAD,CAAU,CAClC,MAAIA,EAAJ,EAAeA,CAAAoG,aAAf,GAAuCG,EAAvC,EACEA,CAAA,CAAUvG,CAAAoG,aAAV,CAAArH,OAAA,CAAuC,UAAvC,CAGO,CAFP1nB,CAAA4uB,cAAA,CAAsBjG,CAAAoG,aAAtB,CAEO;AADP,OAAOG,CAAA,CAAUvG,CAAAoG,aAAV,CACA,CAAA,CAAA,CAJT,EAMO,CAAA,CAP2B,CAUpC,OAAO5hB,EAnLyC,CADtC,CADe,CAmM7BhW,QAASA,GAAe,EAAG,CACzB,IAAA8P,KAAA,CAAYC,QAAQ,EAAG,CACrB,MAAO,CACL8K,GAAI,OADC,CAGLod,eAAgB,CACdC,YAAa,GADC,CAEdC,UAAW,GAFG,CAGdC,SAAU,CACR,CACEC,OAAQ,CADV,CAEEC,QAAS,CAFX,CAGEC,QAAS,CAHX,CAIEC,OAAQ,EAJV,CAKEC,OAAQ,EALV,CAMEC,OAAQ,GANV,CAOEC,OAAQ,EAPV,CAQEC,MAAO,CART,CASEC,OAAQ,CATV,CADQ,CAWN,CACAR,OAAQ,CADR,CAEAC,QAAS,CAFT,CAGAC,QAAS,CAHT,CAIAC,OAAQ,QAJR,CAKAC,OAAQ,EALR,CAMAC,OAAQ,SANR,CAOAC,OAAQ,GAPR,CAQAC,MAAO,CARP,CASAC,OAAQ,CATR,CAXM,CAHI,CA0BdC,aAAc,GA1BA,CAHX,CAgCLC,iBAAkB,CAChBC,MACI,uFAAA,MAAA,CAAA,GAAA,CAFY,CAIhBC,WAAa,iDAAA,MAAA,CAAA,GAAA,CAJG;AAKhBC,IAAK,0DAAA,MAAA,CAAA,GAAA,CALW,CAMhBC,SAAU,6BAAA,MAAA,CAAA,GAAA,CANM,CAOhBC,MAAO,CAAC,IAAD,CAAM,IAAN,CAPS,CAQhBC,OAAQ,oBARQ,CAShB,QAAS,eATO,CAUhBC,SAAU,iBAVM,CAWhBC,SAAU,WAXM,CAYhBC,WAAY,UAZI,CAahBC,UAAW,QAbK,CAchBC,WAAY,WAdI,CAehBC,UAAW,QAfK,CAgBhBC,SAAU,CACR,eADQ,CAER,aAFQ,CAhBM,CAoBhBC,KAAM,CACJ,IADI,CAEJ,IAFI,CApBU,CAhCb,CA0DLC,UAAWA,QAAQ,CAACC,CAAD,CAAM,CACvB,MAAY,EAAZ,GAAIA,CAAJ,CACS,KADT,CAGO,OAJgB,CA1DpB,CADc,CADE,CAiF3BC,QAASA,GAAU,CAAC18B,CAAD,CAAO,CACpB28B,CAAAA,CAAW38B,CAAAzJ,MAAA,CAAW,GAAX,CAGf,KAHA,IACI7C,EAAIipC,CAAAlqC,OAER,CAAOiB,CAAA,EAAP,CAAA,CACEipC,CAAA,CAASjpC,CAAT,CAAA,CAAcqH,EAAA,CAAiB4hC,CAAA,CAASjpC,CAAT,CAAjB,CAGhB;MAAOipC,EAAA7hC,KAAA,CAAc,GAAd,CARiB,CAW1B8hC,QAASA,GAAgB,CAACC,CAAD,CAAcC,CAAd,CAA2B,CAClD,IAAIC,EAAYnF,EAAA,CAAWiF,CAAX,CAEhBC,EAAAE,WAAA,CAAyBD,CAAAlF,SACzBiF,EAAAG,OAAA,CAAqBF,CAAAG,SACrBJ,EAAAK,OAAA,CAAqB1oC,EAAA,CAAIsoC,CAAAK,KAAJ,CAArB,EAA4CC,EAAA,CAAcN,CAAAlF,SAAd,CAA5C,EAAiF,IAL/B,CASpDyF,QAASA,GAAW,CAACC,CAAD,CAAcT,CAAd,CAA2B,CAC7C,IAAIU,EAAsC,GAAtCA,GAAYD,CAAAtlC,OAAA,CAAmB,CAAnB,CACZulC,EAAJ,GACED,CADF,CACgB,GADhB,CACsBA,CADtB,CAGA,KAAI5lC,EAAQigC,EAAA,CAAW2F,CAAX,CACZT,EAAAW,OAAA,CAAqBnjC,kBAAA,CAAmBkjC,CAAA,EAAyC,GAAzC,GAAY7lC,CAAA+lC,SAAAzlC,OAAA,CAAsB,CAAtB,CAAZ,CACpCN,CAAA+lC,SAAA1hB,UAAA,CAAyB,CAAzB,CADoC,CACNrkB,CAAA+lC,SADb,CAErBZ,EAAAa,SAAA,CAAuBpjC,EAAA,CAAc5C,CAAAimC,OAAd,CACvBd,EAAAe,OAAA,CAAqBvjC,kBAAA,CAAmB3C,CAAA+f,KAAnB,CAGjBolB,EAAAW,OAAJ,EAA0D,GAA1D,EAA0BX,CAAAW,OAAAxlC,OAAA,CAA0B,CAA1B,CAA1B,GACE6kC,CAAAW,OADF,CACuB,GADvB,CAC6BX,CAAAW,OAD7B,CAZ6C,CAyB/CK,QAASA,GAAU,CAACC,CAAD,CAAQC,CAAR,CAAe,CAChC,GAA6B,CAA7B,GAAIA,CAAAlnC,QAAA,CAAcinC,CAAd,CAAJ,CACE,MAAOC,EAAAjjB,OAAA,CAAagjB,CAAAtrC,OAAb,CAFuB,CAOlCqoB,QAASA,GAAS,CAACvB,CAAD,CAAM,CACtB,IAAI1iB,EAAQ0iB,CAAAziB,QAAA,CAAY,GAAZ,CACZ;MAAiB,EAAV,EAAAD,CAAA,CAAc0iB,CAAd,CAAoBA,CAAAwB,OAAA,CAAW,CAAX,CAAclkB,CAAd,CAFL,CAKxBonC,QAASA,GAAa,CAAC1kB,CAAD,CAAM,CAC1B,MAAOA,EAAAnf,QAAA,CAAY,UAAZ,CAAwB,IAAxB,CADmB,CAK5B8jC,QAASA,GAAS,CAAC3kB,CAAD,CAAM,CACtB,MAAOA,EAAAwB,OAAA,CAAW,CAAX,CAAcD,EAAA,CAAUvB,CAAV,CAAA4kB,YAAA,CAA2B,GAA3B,CAAd,CAAgD,CAAhD,CADe,CAkBxBC,QAASA,GAAgB,CAACC,CAAD,CAAUC,CAAV,CAAsB,CAC7C,IAAAC,QAAA,CAAe,CAAA,CACfD,EAAA,CAAaA,CAAb,EAA2B,EAC3B,KAAIE,EAAgBN,EAAA,CAAUG,CAAV,CACpBzB,GAAA,CAAiByB,CAAjB,CAA0B,IAA1B,CAQA,KAAAI,QAAA,CAAeC,QAAQ,CAACnlB,CAAD,CAAM,CAC3B,IAAIolB,EAAUb,EAAA,CAAWU,CAAX,CAA0BjlB,CAA1B,CACd,IAAK,CAAA3mB,CAAA,CAAS+rC,CAAT,CAAL,CACE,KAAMC,GAAA,CAAgB,UAAhB,CAA6ErlB,CAA7E,CACFilB,CADE,CAAN,CAIFlB,EAAA,CAAYqB,CAAZ,CAAqB,IAArB,CAEK,KAAAlB,OAAL,GACE,IAAAA,OADF,CACgB,GADhB,CAIA,KAAAoB,UAAA,EAb2B,CAoB7B,KAAAA,UAAA,CAAiBC,QAAQ,EAAG,CAAA,IACtBlB,EAASljC,EAAA,CAAW,IAAAijC,SAAX,CADa,CAEtBjmB,EAAO,IAAAmmB,OAAA,CAAc,GAAd,CAAoB9iC,EAAA,CAAiB,IAAA8iC,OAAjB,CAApB,CAAoD,EAE/D,KAAAkB,MAAA,CAAarC,EAAA,CAAW,IAAAe,OAAX,CAAb,EAAwCG,CAAA,CAAS,GAAT,CAAeA,CAAf,CAAwB,EAAhE,EAAsElmB,CACtE,KAAAsnB,SAAA,CAAgBR,CAAhB,CAAgC,IAAAO,MAAAhkB,OAAA,CAAkB,CAAlB,CALN,CAQ5B,KAAAkkB,eAAA;AAAsBC,QAAQ,CAAC3lB,CAAD,CAAM4lB,CAAN,CAAe,CAC3C,GAAIA,CAAJ,EAA8B,GAA9B,GAAeA,CAAA,CAAQ,CAAR,CAAf,CAIE,MADA,KAAAznB,KAAA,CAAUynB,CAAAxmC,MAAA,CAAc,CAAd,CAAV,CACO,CAAA,CAAA,CALkC,KAOvCymC,CAPuC,CAO/BC,CAGZ,EAAKD,CAAL,CAActB,EAAA,CAAWO,CAAX,CAAoB9kB,CAApB,CAAd,IAA4CnnB,CAA5C,EACEitC,CAEE,CAFWD,CAEX,CAAAE,CAAA,CADF,CAAKF,CAAL,CAActB,EAAA,CAAWQ,CAAX,CAAuBc,CAAvB,CAAd,IAAkDhtC,CAAlD,CACiBosC,CADjB,EACkCV,EAAA,CAAW,GAAX,CAAgBsB,CAAhB,CADlC,EAC6DA,CAD7D,EAGiBf,CAHjB,CAG2BgB,CAL7B,EAOO,CAAKD,CAAL,CAActB,EAAA,CAAWU,CAAX,CAA0BjlB,CAA1B,CAAd,IAAkDnnB,CAAlD,CACLktC,CADK,CACUd,CADV,CAC0BY,CAD1B,CAEIZ,CAFJ,EAEqBjlB,CAFrB,CAE2B,GAF3B,GAGL+lB,CAHK,CAGUd,CAHV,CAKHc,EAAJ,EACE,IAAAb,QAAA,CAAaa,CAAb,CAEF,OAAO,CAAEA,CAAAA,CAzBkC,CAxCA,CA+E/CC,QAASA,GAAmB,CAAClB,CAAD,CAAUmB,CAAV,CAAsB,CAChD,IAAIhB,EAAgBN,EAAA,CAAUG,CAAV,CAEpBzB,GAAA,CAAiByB,CAAjB,CAA0B,IAA1B,CAQA,KAAAI,QAAA,CAAeC,QAAQ,CAACnlB,CAAD,CAAM,CACvBkmB,CAAAA,CAAiB3B,EAAA,CAAWO,CAAX,CAAoB9kB,CAApB,CAAjBkmB,EAA6C3B,EAAA,CAAWU,CAAX,CAA0BjlB,CAA1B,CACjD,KAAImmB,CAE6B,IAAjC,GAAID,CAAAxnC,OAAA,CAAsB,CAAtB,CAAJ,EAIEynC,CACA,CADiB5B,EAAA,CAAW0B,CAAX,CAAuBC,CAAvB,CACjB,CAAIrqC,CAAA,CAAYsqC,CAAZ,CAAJ,GAEEA,CAFF,CAEmBD,CAFnB,CALF,EAcEC,CAdF,CAcmB,IAAAnB,QAAA,CAAekB,CAAf,CAAgC,EAGnDnC,GAAA,CAAYoC,CAAZ,CAA4B,IAA5B,CAEqCjC,EAAAA,CAAAA,IAAAA,OAoBnC,KAAIkC,EAAqB,iBAKC,EAA1B,GAAIpmB,CAAAziB,QAAA,CAzB4DunC,CAyB5D,CAAJ,GACE9kB,CADF,CACQA,CAAAnf,QAAA,CA1BwDikC,CA0BxD,CAAkB,EAAlB,CADR,CAKIsB,EAAA5yB,KAAA,CAAwBwM,CAAxB,CAAJ,GAKA,CALA,CAKO,CADPqmB,CACO,CADiBD,CAAA5yB,KAAA,CAAwB/M,CAAxB,CACjB,EAAwB4/B,CAAA,CAAsB,CAAtB,CAAxB,CAAmD5/B,CAL1D,CA9BF,KAAAy9B,OAAA,CAAc,CAEd,KAAAoB,UAAA,EAzB2B,CAkE7B;IAAAA,UAAA,CAAiBC,QAAQ,EAAG,CAAA,IACtBlB,EAASljC,EAAA,CAAW,IAAAijC,SAAX,CADa,CAEtBjmB,EAAO,IAAAmmB,OAAA,CAAc,GAAd,CAAoB9iC,EAAA,CAAiB,IAAA8iC,OAAjB,CAApB,CAAoD,EAE/D,KAAAkB,MAAA,CAAarC,EAAA,CAAW,IAAAe,OAAX,CAAb,EAAwCG,CAAA,CAAS,GAAT,CAAeA,CAAf,CAAwB,EAAhE,EAAsElmB,CACtE,KAAAsnB,SAAA,CAAgBX,CAAhB,EAA2B,IAAAU,MAAA,CAAaS,CAAb,CAA0B,IAAAT,MAA1B,CAAuC,EAAlE,CAL0B,CAQ5B,KAAAE,eAAA,CAAsBC,QAAQ,CAAC3lB,CAAD,CAAM4lB,CAAN,CAAe,CAC3C,MAAIrkB,GAAA,CAAUujB,CAAV,CAAJ,EAA0BvjB,EAAA,CAAUvB,CAAV,CAA1B,EACE,IAAAklB,QAAA,CAAallB,CAAb,CACO,CAAA,CAAA,CAFT,EAIO,CAAA,CALoC,CArFG,CAwGlDsmB,QAASA,GAA0B,CAACxB,CAAD,CAAUmB,CAAV,CAAsB,CACvD,IAAAjB,QAAA,CAAe,CAAA,CACfgB,GAAAtmC,MAAA,CAA0B,IAA1B,CAAgC3E,SAAhC,CAEA,KAAIkqC,EAAgBN,EAAA,CAAUG,CAAV,CAEpB,KAAAY,eAAA,CAAsBC,QAAQ,CAAC3lB,CAAD,CAAM4lB,CAAN,CAAe,CAC3C,GAAIA,CAAJ,EAA8B,GAA9B,GAAeA,CAAA,CAAQ,CAAR,CAAf,CAIE,MADA,KAAAznB,KAAA,CAAUynB,CAAAxmC,MAAA,CAAc,CAAd,CAAV,CACO,CAAA,CAAA,CAGT,KAAI2mC,CAAJ,CACIF,CAEAf,EAAJ,EAAevjB,EAAA,CAAUvB,CAAV,CAAf,CACE+lB,CADF,CACiB/lB,CADjB,CAEO,CAAK6lB,CAAL,CAActB,EAAA,CAAWU,CAAX,CAA0BjlB,CAA1B,CAAd,EACL+lB,CADK,CACUjB,CADV,CACoBmB,CADpB,CACiCJ,CADjC,CAEIZ,CAFJ,GAEsBjlB,CAFtB,CAE4B,GAF5B,GAGL+lB,CAHK,CAGUd,CAHV,CAKHc,EAAJ,EACE,IAAAb,QAAA,CAAaa,CAAb,CAEF,OAAO,CAAEA,CAAAA,CArBkC,CAwB7C,KAAAT,UAAA;AAAiBC,QAAQ,EAAG,CAAA,IACtBlB,EAASljC,EAAA,CAAW,IAAAijC,SAAX,CADa,CAEtBjmB,EAAO,IAAAmmB,OAAA,CAAc,GAAd,CAAoB9iC,EAAA,CAAiB,IAAA8iC,OAAjB,CAApB,CAAoD,EAE/D,KAAAkB,MAAA,CAAarC,EAAA,CAAW,IAAAe,OAAX,CAAb,EAAwCG,CAAA,CAAS,GAAT,CAAeA,CAAf,CAAwB,EAAhE,EAAsElmB,CAEtE,KAAAsnB,SAAA,CAAgBX,CAAhB,CAA0BmB,CAA1B,CAAuC,IAAAT,MANb,CA9B2B,CAoWzDe,QAASA,GAAc,CAACC,CAAD,CAAW,CAChC,MAAO,SAAQ,EAAG,CAChB,MAAO,KAAA,CAAKA,CAAL,CADS,CADc,CAOlCC,QAASA,GAAoB,CAACD,CAAD,CAAWE,CAAX,CAAuB,CAClD,MAAO,SAAQ,CAACpsC,CAAD,CAAQ,CACrB,GAAIuB,CAAA,CAAYvB,CAAZ,CAAJ,CACE,MAAO,KAAA,CAAKksC,CAAL,CAET,KAAA,CAAKA,CAAL,CAAA,CAAiBE,CAAA,CAAWpsC,CAAX,CACjB,KAAAgrC,UAAA,EAEA,OAAO,KAPc,CAD2B,CA6CpD/0B,QAASA,GAAiB,EAAG,CAAA,IACvB01B,EAAa,EADU,CAEvBU,EAAY,CACV9f,QAAS,CAAA,CADC,CAEV+f,YAAa,CAAA,CAFH,CAGVC,aAAc,CAAA,CAHJ,CAahB,KAAAZ,WAAA,CAAkBa,QAAQ,CAAC3kC,CAAD,CAAS,CACjC,MAAIrG,EAAA,CAAUqG,CAAV,CAAJ,EACE8jC,CACO,CADM9jC,CACN,CAAA,IAFT,EAIS8jC,CALwB,CA4BnC,KAAAU,UAAA,CAAiBI,QAAQ,CAAC3hB,CAAD,CAAO,CAC9B,MAAI7oB,GAAA,CAAU6oB,CAAV,CAAJ,EACEuhB,CAAA9f,QACO,CADazB,CACb,CAAA,IAFT,EAGWrpB,CAAA,CAASqpB,CAAT,CAAJ,EAED7oB,EAAA,CAAU6oB,CAAAyB,QAAV,CAYG,GAXL8f,CAAA9f,QAWK;AAXezB,CAAAyB,QAWf,EARHtqB,EAAA,CAAU6oB,CAAAwhB,YAAV,CAQG,GAPLD,CAAAC,YAOK,CAPmBxhB,CAAAwhB,YAOnB,EAJHrqC,EAAA,CAAU6oB,CAAAyhB,aAAV,CAIG,GAHLF,CAAAE,aAGK,CAHoBzhB,CAAAyhB,aAGpB,EAAA,IAdF,EAgBEF,CApBqB,CA+DhC,KAAA1tB,KAAA,CAAY,CAAC,YAAD,CAAe,UAAf,CAA2B,UAA3B,CAAuC,cAAvC,CAAuD,SAAvD,CACR,QAAQ,CAACrI,CAAD,CAAa1B,CAAb,CAAuBoC,CAAvB,CAAiCgX,CAAjC,CAA+CtW,CAA/C,CAAwD,CAyBlEg1B,QAASA,EAAyB,CAAChnB,CAAD,CAAMnf,CAAN,CAAe+e,CAAf,CAAsB,CACtD,IAAIqnB,EAAS32B,CAAA0P,IAAA,EAAb,CACIknB,EAAW52B,CAAA62B,QACf,IAAI,CACFj4B,CAAA8Q,IAAA,CAAaA,CAAb,CAAkBnf,CAAlB,CAA2B+e,CAA3B,CAKA,CAAAtP,CAAA62B,QAAA,CAAoBj4B,CAAA0Q,MAAA,EANlB,CAOF,MAAOpf,CAAP,CAAU,CAKV,KAHA8P,EAAA0P,IAAA,CAAcinB,CAAd,CAGMzmC,CAFN8P,CAAA62B,QAEM3mC,CAFc0mC,CAEd1mC,CAAAA,CAAN,CALU,CAV0C,CA8IxD4mC,QAASA,EAAmB,CAACH,CAAD,CAASC,CAAT,CAAmB,CAC7Ct2B,CAAAy2B,WAAA,CAAsB,wBAAtB,CAAgD/2B,CAAAg3B,OAAA,EAAhD,CAAoEL,CAApE,CACE32B,CAAA62B,QADF,CACqBD,CADrB,CAD6C,CAvKmB,IAC9D52B,CAD8D,CAE9Di3B,CACAzlB,EAAAA,CAAW5S,CAAA4S,SAAA,EAHmD,KAI9D0lB,EAAat4B,CAAA8Q,IAAA,EAJiD,CAK9D8kB,CAEJ,IAAI6B,CAAA9f,QAAJ,CAAuB,CACrB,GAAK/E,CAAAA,CAAL,EAAiB6kB,CAAAC,YAAjB,CACE,KAAMvB,GAAA,CAAgB,QAAhB,CAAN;AAGFP,CAAA,CAAqB0C,CAltBlB/kB,UAAA,CAAc,CAAd,CAktBkB+kB,CAltBDjqC,QAAA,CAAY,GAAZ,CAktBCiqC,CAltBgBjqC,QAAA,CAAY,IAAZ,CAAjB,CAAqC,CAArC,CAAjB,CAktBH,EAAoCukB,CAApC,EAAgD,GAAhD,CACAylB,EAAA,CAAej2B,CAAAqO,QAAA,CAAmBklB,EAAnB,CAAsCyB,EANhC,CAAvB,IAQExB,EACA,CADUvjB,EAAA,CAAUimB,CAAV,CACV,CAAAD,CAAA,CAAevB,EAEjB11B,EAAA,CAAY,IAAIi3B,CAAJ,CAAiBzC,CAAjB,CAA0B,GAA1B,CAAgCmB,CAAhC,CACZ31B,EAAAo1B,eAAA,CAAyB8B,CAAzB,CAAqCA,CAArC,CAEAl3B,EAAA62B,QAAA,CAAoBj4B,CAAA0Q,MAAA,EAEpB,KAAI6nB,EAAoB,2BAqBxBnf,EAAApjB,GAAA,CAAgB,OAAhB,CAAyB,QAAQ,CAACkT,CAAD,CAAQ,CAIvC,GAAKuuB,CAAAE,aAAL,EAA+Ba,CAAAtvB,CAAAsvB,QAA/B,EAAgDC,CAAAvvB,CAAAuvB,QAAhD,EAAiEC,CAAAxvB,CAAAwvB,SAAjE,EAAkG,CAAlG,EAAmFxvB,CAAAyvB,MAAnF,EAAuH,CAAvH,EAAuGzvB,CAAA0vB,OAAvG,CAAA,CAKA,IAHA,IAAI1pB,EAAM/d,CAAA,CAAO+X,CAAA2vB,OAAP,CAGV,CAA6B,GAA7B,GAAO9qC,EAAA,CAAUmhB,CAAA,CAAI,CAAJ,CAAV,CAAP,CAAA,CAEE,GAAIA,CAAA,CAAI,CAAJ,CAAJ,GAAekK,CAAA,CAAa,CAAb,CAAf,EAAmC,CAAA,CAAClK,CAAD,CAAOA,CAAA9iB,OAAA,EAAP,EAAqB,CAArB,CAAnC,CAA4D,MAG9D,KAAI0sC,EAAU5pB,CAAAzhB,KAAA,CAAS,MAAT,CAAd,CAGIipC,EAAUxnB,CAAAxhB,KAAA,CAAS,MAAT,CAAVgpC,EAA8BxnB,CAAAxhB,KAAA,CAAS,YAAT,CAE9Bb,EAAA,CAASisC,CAAT,CAAJ,EAAgD,4BAAhD,GAAyBA,CAAA9rC,SAAA,EAAzB,GAGE8rC,CAHF,CAGY3J,EAAA,CAAW2J,CAAA5c,QAAX,CAAAnK,KAHZ,CAOIwmB;CAAA7jC,KAAA,CAAuBokC,CAAvB,CAAJ,EAEIA,CAAAA,CAFJ,EAEgB5pB,CAAAxhB,KAAA,CAAS,QAAT,CAFhB,EAEuCwb,CAAAC,mBAAA,EAFvC,EAGM,CAAA/H,CAAAo1B,eAAA,CAAyBsC,CAAzB,CAAkCpC,CAAlC,CAHN,GAOIxtB,CAAA6vB,eAAA,EAEA,CAAI33B,CAAAg3B,OAAA,EAAJ,EAA0Bp4B,CAAA8Q,IAAA,EAA1B,GACEpP,CAAApN,OAAA,EAEA,CAAAwO,CAAAnO,QAAA,CAAgB,0BAAhB,CAAA,CAA8C,CAAA,CAHhD,CATJ,CAtBA,CAJuC,CAAzC,CA8CI6gC,GAAA,CAAcp0B,CAAAg3B,OAAA,EAAd,CAAJ,EAAyC5C,EAAA,CAAc8C,CAAd,CAAzC,EACEt4B,CAAA8Q,IAAA,CAAa1P,CAAAg3B,OAAA,EAAb,CAAiC,CAAA,CAAjC,CAGF,KAAIY,EAAe,CAAA,CAGnBh5B,EAAAyS,YAAA,CAAqB,QAAQ,CAACwmB,CAAD,CAASC,CAAT,CAAmB,CAC9Cx3B,CAAAvU,WAAA,CAAsB,QAAQ,EAAG,CAC/B,IAAI4qC,EAAS32B,CAAAg3B,OAAA,EAAb,CACIJ,EAAW52B,CAAA62B,QADf,CAEI5uB,CAEJjI,EAAA40B,QAAA,CAAkBiD,CAAlB,CACA73B,EAAA62B,QAAA,CAAoBiB,CAEpB7vB,EAAA,CAAmB3H,CAAAy2B,WAAA,CAAsB,sBAAtB,CAA8Cc,CAA9C,CAAsDlB,CAAtD,CACfmB,CADe,CACLlB,CADK,CAAA3uB,iBAKfjI,EAAAg3B,OAAA,EAAJ,GAA2Ba,CAA3B,GAEI5vB,CAAJ,EACEjI,CAAA40B,QAAA,CAAkB+B,CAAlB,CAEA,CADA32B,CAAA62B,QACA,CADoBD,CACpB,CAAAF,CAAA,CAA0BC,CAA1B,CAAkC,CAAA,CAAlC,CAAyCC,CAAzC,CAHF,GAKEgB,CACA,CADe,CAAA,CACf,CAAAd,CAAA,CAAoBH,CAApB,CAA4BC,CAA5B,CANF,CAFA,CAb+B,CAAjC,CAwBKt2B,EAAAirB,QAAL,EAAyBjrB,CAAAy3B,QAAA,EAzBqB,CAAhD,CA6BAz3B;CAAAtU,OAAA,CAAkBgsC,QAAuB,EAAG,CAC1C,IAAIrB,EAASvC,EAAA,CAAcx1B,CAAA8Q,IAAA,EAAd,CAAb,CACImoB,EAASzD,EAAA,CAAcp0B,CAAAg3B,OAAA,EAAd,CADb,CAEIJ,EAAWh4B,CAAA0Q,MAAA,EAFf,CAGI2oB,EAAiBj4B,CAAAk4B,UAHrB,CAIIC,EAAoBxB,CAApBwB,GAA+BN,CAA/BM,EACDn4B,CAAA00B,QADCyD,EACoBn3B,CAAAqO,QADpB8oB,EACwCvB,CADxCuB,GACqDn4B,CAAA62B,QAEzD,IAAIe,CAAJ,EAAoBO,CAApB,CACEP,CAEA,CAFe,CAAA,CAEf,CAAAt3B,CAAAvU,WAAA,CAAsB,QAAQ,EAAG,CAC/B,IAAI8rC,EAAS73B,CAAAg3B,OAAA,EAAb,CACI/uB,EAAmB3H,CAAAy2B,WAAA,CAAsB,sBAAtB,CAA8Cc,CAA9C,CAAsDlB,CAAtD,CACnB32B,CAAA62B,QADmB,CACAD,CADA,CAAA3uB,iBAKnBjI,EAAAg3B,OAAA,EAAJ,GAA2Ba,CAA3B,GAEI5vB,CAAJ,EACEjI,CAAA40B,QAAA,CAAkB+B,CAAlB,CACA,CAAA32B,CAAA62B,QAAA,CAAoBD,CAFtB,GAIMuB,CAIJ,EAHEzB,CAAA,CAA0BmB,CAA1B,CAAkCI,CAAlC,CAC0BrB,CAAA,GAAa52B,CAAA62B,QAAb,CAAiC,IAAjC,CAAwC72B,CAAA62B,QADlE,CAGF,CAAAC,CAAA,CAAoBH,CAApB,CAA4BC,CAA5B,CARF,CAFA,CAP+B,CAAjC,CAsBF52B,EAAAk4B,UAAA,CAAsB,CAAA,CAjCoB,CAA5C,CAuCA,OAAOl4B,EArK2D,CADxD,CA1Ge,CAqU7BG,QAASA,GAAY,EAAG,CAAA,IAClBi4B,EAAQ,CAAA,CADU,CAElBppC,EAAO,IASX,KAAAqpC,aAAA,CAAoBC,QAAQ,CAACC,CAAD,CAAO,CACjC,MAAI/sC,EAAA,CAAU+sC,CAAV,CAAJ,EACEH,CACK,CADGG,CACH,CAAA,IAFP,EAISH,CALwB,CASnC,KAAAzvB,KAAA,CAAY,CAAC,SAAD,CAAY,QAAQ,CAACjH,CAAD,CAAU,CAwDxC82B,QAASA,EAAW,CAAC5iC,CAAD,CAAM,CACpBA,CAAJ;AAAmB6iC,KAAnB,GACM7iC,CAAAoV,MAAJ,CACEpV,CADF,CACSA,CAAAmV,QAAD,EAAoD,EAApD,GAAgBnV,CAAAoV,MAAA/d,QAAA,CAAkB2I,CAAAmV,QAAlB,CAAhB,CACA,SADA,CACYnV,CAAAmV,QADZ,CAC0B,IAD1B,CACiCnV,CAAAoV,MADjC,CAEApV,CAAAoV,MAHR,CAIWpV,CAAA8iC,UAJX,GAKE9iC,CALF,CAKQA,CAAAmV,QALR,CAKsB,IALtB,CAK6BnV,CAAA8iC,UAL7B,CAK6C,GAL7C,CAKmD9iC,CAAAkyB,KALnD,CADF,CASA,OAAOlyB,EAViB,CAa1B+iC,QAASA,EAAU,CAAC/zB,CAAD,CAAO,CAAA,IACpBg0B,EAAUl3B,CAAAk3B,QAAVA,EAA6B,EADT,CAEpBC,EAAQD,CAAA,CAAQh0B,CAAR,CAARi0B,EAAyBD,CAAAE,IAAzBD,EAAwC1tC,CACxC4tC,EAAAA,CAAW,CAAA,CAIf,IAAI,CACFA,CAAA,CAAW,CAAE3pC,CAAAypC,CAAAzpC,MADX,CAEF,MAAOc,CAAP,CAAU,EAEZ,MAAI6oC,EAAJ,CACS,QAAQ,EAAG,CAChB,IAAItvB,EAAO,EACXxgB,EAAA,CAAQwB,SAAR,CAAmB,QAAQ,CAACmL,CAAD,CAAM,CAC/B6T,CAAAhc,KAAA,CAAU+qC,CAAA,CAAY5iC,CAAZ,CAAV,CAD+B,CAAjC,CAGA,OAAOijC,EAAAzpC,MAAA,CAAYwpC,CAAZ,CAAqBnvB,CAArB,CALS,CADpB,CAYO,QAAQ,CAACuvB,CAAD,CAAOC,CAAP,CAAa,CAC1BJ,CAAA,CAAMG,CAAN,CAAoB,IAAR,EAAAC,CAAA,CAAe,EAAf,CAAoBA,CAAhC,CAD0B,CAvBJ,CApE1B,MAAO,CAQLH,IAAKH,CAAA,CAAW,KAAX,CARA,CAiBLxkB,KAAMwkB,CAAA,CAAW,MAAX,CAjBD,CA0BL1mB,KAAM0mB,CAAA,CAAW,MAAX,CA1BD,CAmCLhqB,MAAOgqB,CAAA,CAAW,OAAX,CAnCF,CA4CLP,MAAQ,QAAQ,EAAG,CACjB,IAAInpC,EAAK0pC,CAAA,CAAW,OAAX,CAET,OAAO,SAAQ,EAAG,CACZP,CAAJ,EACEnpC,CAAAG,MAAA,CAASJ,CAAT;AAAevE,SAAf,CAFc,CAHD,CAAX,EA5CH,CADiC,CAA9B,CApBU,CA4JxByuC,QAASA,GAAoB,CAACpnC,CAAD,CAAOqnC,CAAP,CAAuB,CAClD,GAAa,kBAAb,GAAIrnC,CAAJ,EAA4C,kBAA5C,GAAmCA,CAAnC,EACgB,kBADhB,GACOA,CADP,EAC+C,kBAD/C,GACsCA,CADtC,EAEgB,WAFhB,GAEOA,CAFP,CAGE,KAAMsnC,GAAA,CAAa,SAAb,CAEmBD,CAFnB,CAAN,CAIF,MAAOrnC,EAR2C,CAWpDunC,QAASA,GAAgB,CAAC3wC,CAAD,CAAMywC,CAAN,CAAsB,CAE7C,GAAIzwC,CAAJ,CAAS,CACP,GAAIA,CAAAsN,YAAJ,GAAwBtN,CAAxB,CACE,KAAM0wC,GAAA,CAAa,QAAb,CAEFD,CAFE,CAAN,CAGK,GACHzwC,CAAAL,OADG,GACYK,CADZ,CAEL,KAAM0wC,GAAA,CAAa,YAAb,CAEFD,CAFE,CAAN,CAGK,GACHzwC,CAAA4wC,SADG,GACc5wC,CAAA0D,SADd,EAC+B1D,CAAA2D,KAD/B,EAC2C3D,CAAA4D,KAD3C,EACuD5D,CAAA6D,KADvD,EAEL,KAAM6sC,GAAA,CAAa,SAAb,CAEFD,CAFE,CAAN,CAGK,GACHzwC,CADG,GACKiB,MADL,CAEL,KAAMyvC,GAAA,CAAa,SAAb,CAEFD,CAFE,CAAN,CAjBK,CAsBT,MAAOzwC,EAxBsC,CAqR/C6wC,QAASA,GAAU,CAAChK,CAAD,CAAM,CACvB,MAAOA,EAAAt3B,SADgB,CA2ezBuhC,QAASA,GAAM,CAAC9wC,CAAD,CAAM+iB,CAAN,CAActV,CAAd,CAAoBsjC,CAApB,CAA8BC,CAA9B,CAAuC,CACpDL,EAAA,CAAiB3wC,CAAjB,CAAsBgxC,CAAtB,CACAL,GAAA,CAAiB5tB,CAAjB,CAAyBiuB,CAAzB,CAEI9sC,EAAAA,CAAUuJ,CAAAzJ,MAAA,CAAW,GAAX,CACd,KADA,IAA+BtD,CAA/B;AACSS,EAAI,CAAb,CAAiC,CAAjC,CAAgB+C,CAAAhE,OAAhB,CAAoCiB,CAAA,EAApC,CAAyC,CACvCT,CAAA,CAAM8vC,EAAA,CAAqBtsC,CAAA4e,MAAA,EAArB,CAAsCkuB,CAAtC,CACN,KAAIC,EAAqB,CAArBA,GAAe9vC,CAAf8vC,EAA0BluB,CAA1BkuB,EAAoCluB,CAAA,CAAOriB,CAAP,CAApCuwC,EAAoDjxC,CAAA,CAAIU,CAAJ,CACnDuwC,EAAL,GACEA,CACA,CADc,EACd,CAAAjxC,CAAA,CAAIU,CAAJ,CAAA,CAAWuwC,CAFb,CAIAjxC,EAAA,CAAM2wC,EAAA,CAAiBM,CAAjB,CAA8BD,CAA9B,CAPiC,CASzCtwC,CAAA,CAAM8vC,EAAA,CAAqBtsC,CAAA4e,MAAA,EAArB,CAAsCkuB,CAAtC,CACNL,GAAA,CAAiB3wC,CAAA,CAAIU,CAAJ,CAAjB,CAA2BswC,CAA3B,CAEA,OADAhxC,EAAA,CAAIU,CAAJ,CACA,CADWqwC,CAhByC,CAuBtDG,QAASA,GAA6B,CAAC9nC,CAAD,CAAO,CAC3C,MAAe,aAAf,EAAOA,CADoC,CAS7C+nC,QAASA,GAAe,CAACC,CAAD,CAAOC,CAAP,CAAaC,CAAb,CAAmBC,CAAnB,CAAyBC,CAAzB,CAA+BR,CAA/B,CAAwCS,CAAxC,CAAyD,CAC/EjB,EAAA,CAAqBY,CAArB,CAA2BJ,CAA3B,CACAR,GAAA,CAAqBa,CAArB,CAA2BL,CAA3B,CACAR,GAAA,CAAqBc,CAArB,CAA2BN,CAA3B,CACAR,GAAA,CAAqBe,CAArB,CAA2BP,CAA3B,CACAR,GAAA,CAAqBgB,CAArB,CAA2BR,CAA3B,CACA,KAAIU,EAAMA,QAAQ,CAACC,CAAD,CAAI,CACpB,MAAOhB,GAAA,CAAiBgB,CAAjB,CAAoBX,CAApB,CADa,CAAtB,CAGIY,EAAQH,CAAD,EAAoBP,EAAA,CAA8BE,CAA9B,CAApB,CAA2DM,CAA3D,CAAiEhvC,EAH5E,CAIImvC,EAAQJ,CAAD,EAAoBP,EAAA,CAA8BG,CAA9B,CAApB,CAA2DK,CAA3D,CAAiEhvC,EAJ5E,CAKIovC,EAAQL,CAAD,EAAoBP,EAAA,CAA8BI,CAA9B,CAApB,CAA2DI,CAA3D,CAAiEhvC,EAL5E,CAMIqvC,EAAQN,CAAD,EAAoBP,EAAA,CAA8BK,CAA9B,CAApB,CAA2DG,CAA3D,CAAiEhvC,EAN5E,CAOIsvC,EAAQP,CAAD,EAAoBP,EAAA,CAA8BM,CAA9B,CAApB,CAA2DE,CAA3D,CAAiEhvC,EAE5E,OAAOuvC,SAAsB,CAAC3nC,CAAD,CAAQyY,CAAR,CAAgB,CAC3C,IAAImvB,EAAWnvB,CAAD,EAAWA,CAAAniB,eAAA,CAAsBwwC,CAAtB,CAAX,CAA0CruB,CAA1C,CAAmDzY,CAEjE,IAAe,IAAf,EAAI4nC,CAAJ,CAAqB,MAAOA,EAC5BA,EAAA,CAAUN,CAAA,CAAKM,CAAA,CAAQd,CAAR,CAAL,CAEV,IAAKC,CAAAA,CAAL,CAAW,MAAOa,EAClB,IAAe,IAAf,EAAIA,CAAJ,CAAqB,MAAOryC,EAC5BqyC,EAAA,CAAUL,CAAA,CAAKK,CAAA,CAAQb,CAAR,CAAL,CAEV,IAAKC,CAAAA,CAAL,CAAW,MAAOY,EAClB,IAAe,IAAf;AAAIA,CAAJ,CAAqB,MAAOryC,EAC5BqyC,EAAA,CAAUJ,CAAA,CAAKI,CAAA,CAAQZ,CAAR,CAAL,CAEV,IAAKC,CAAAA,CAAL,CAAW,MAAOW,EAClB,IAAe,IAAf,EAAIA,CAAJ,CAAqB,MAAOryC,EAC5BqyC,EAAA,CAAUH,CAAA,CAAKG,CAAA,CAAQX,CAAR,CAAL,CAEV,OAAKC,EAAL,CACe,IAAf,EAAIU,CAAJ,CAA4BryC,CAA5B,CACAqyC,CADA,CACUF,CAAA,CAAKE,CAAA,CAAQV,CAAR,CAAL,CAFV,CAAkBU,CAlByB,CAfkC,CAyCjFC,QAASA,GAA4B,CAAC5rC,CAAD,CAAKkqC,CAAL,CAAqB,CACxD,MAAO,SAAQ,CAAC2B,CAAD,CAAIp2B,CAAJ,CAAO,CACpB,MAAOzV,EAAA,CAAG6rC,CAAH,CAAMp2B,CAAN,CAAS20B,EAAT,CAA2BF,CAA3B,CADa,CADkC,CAM1D4B,QAASA,GAAQ,CAAC5kC,CAAD,CAAO0c,CAAP,CAAgB6mB,CAAhB,CAAyB,CACxC,IAAIS,EAAkBtnB,CAAAsnB,gBAAtB,CACIa,EAAiBb,CAAA,CAAkBc,EAAlB,CAA2CC,EADhE,CAEIjsC,EAAK+rC,CAAA,CAAc7kC,CAAd,CACT,IAAIlH,CAAJ,CAAQ,MAAOA,EAJyB,KAOpCksC,EAAWhlC,CAAAzJ,MAAA,CAAW,GAAX,CAPyB,CAQpC0uC,EAAiBD,CAAAvyC,OAGrB,IAAIiqB,CAAAla,IAAJ,CAEI1J,CAAA,CADmB,CAArB,CAAImsC,CAAJ,CACOvB,EAAA,CAAgBsB,CAAA,CAAS,CAAT,CAAhB,CAA6BA,CAAA,CAAS,CAAT,CAA7B,CAA0CA,CAAA,CAAS,CAAT,CAA1C,CAAuDA,CAAA,CAAS,CAAT,CAAvD,CAAoEA,CAAA,CAAS,CAAT,CAApE,CAAiFzB,CAAjF,CAA0FS,CAA1F,CADP,CAGOlrC,QAAsB,CAAC+D,CAAD,CAAQyY,CAAR,CAAgB,CAAA,IACrC5hB,EAAI,CADiC,CAC9ByF,CACX,GACEA,EAIA,CAJMuqC,EAAA,CAAgBsB,CAAA,CAAStxC,CAAA,EAAT,CAAhB,CAA+BsxC,CAAA,CAAStxC,CAAA,EAAT,CAA/B,CAA8CsxC,CAAA,CAAStxC,CAAA,EAAT,CAA9C,CAA6DsxC,CAAA,CAAStxC,CAAA,EAAT,CAA7D,CACgBsxC,CAAA,CAAStxC,CAAA,EAAT,CADhB,CAC+B6vC,CAD/B,CACwCS,CADxC,CAAA,CACyDnnC,CADzD,CACgEyY,CADhE,CAIN,CADAA,CACA,CADSljB,CACT,CAAAyK,CAAA,CAAQ1D,CALV,OAMSzF,CANT,CAMauxC,CANb,CAOA,OAAO9rC,EATkC,CAJ/C,KAgBO,CACL,IAAI+rC,EAAO,EACPlB,EAAJ,GACEkB,CADF,EACU,oCADV,CAGA,KAAIC,EAAwBnB,CAC5BlxC,EAAA,CAAQkyC,CAAR,CAAkB,QAAQ,CAAC/xC,CAAD,CAAM4D,CAAN,CAAa,CACrCksC,EAAA,CAAqB9vC,CAArB;AAA0BswC,CAA1B,CACA,KAAI6B,GAAYvuC,CAAA,CAEE,GAFF,CAIE,yBAJF,CAI8B5D,CAJ9B,CAIoC,UAJhDmyC,EAI8D,GAJ9DA,CAIoEnyC,CACxE,IAAI+wC,CAAJ,EAAuBP,EAAA,CAA8BxwC,CAA9B,CAAvB,CACEmyC,CACA,CADW,MACX,CADoBA,CACpB,CAD+B,OAC/B,CAAAD,CAAA,CAAwB,CAAA,CAE1BD,EAAA,EAAQ,qCAAR,CACeE,CADf,CAC0B,KAZW,CAAvC,CAcAF,EAAA,EAAQ,WAGJG,EAAAA,CAAiB,IAAIC,QAAJ,CAAa,GAAb,CAAkB,GAAlB,CAAuB,KAAvB,CAA8B,IAA9B,CAAoCJ,CAApC,CAErBG,EAAA5vC,SAAA,CAA0BN,EAAA,CAAQ+vC,CAAR,CACtBC,EAAJ,GACEE,CADF,CACmBX,EAAA,CAA6BW,CAA7B,CAA6C9B,CAA7C,CADnB,CAGAzqC,EAAA,CAAKusC,CA7BA,CAgCPvsC,CAAAysC,aAAA,CAAkB,CAAA,CAClBzsC,EAAAivB,OAAA,CAAYyd,QAAQ,CAAC3sC,CAAD,CAAOhF,CAAP,CAAcyhB,CAAd,CAAsB,CACxC,MAAO+tB,GAAA,CAAOxqC,CAAP,CAAayc,CAAb,CAAqBtV,CAArB,CAA2BnM,CAA3B,CAAkCmM,CAAlC,CADiC,CAI1C,OADA6kC,EAAA,CAAc7kC,CAAd,CACA,CADsBlH,CA/DkB,CAqE1C2sC,QAASA,GAAU,CAAC5xC,CAAD,CAAQ,CACzB,MAAOX,EAAA,CAAWW,CAAA+kC,QAAX,CAAA,CAA4B/kC,CAAA+kC,QAAA,EAA5B,CAA8C8M,EAAAtyC,KAAA,CAAmBS,CAAnB,CAD5B,CAuD3BqW,QAASA,GAAc,EAAG,CACxB,IAAIy7B,EAAellC,EAAA,EAAnB,CACImlC,EAAiBnlC,EAAA,EAIrB,KAAA+R,KAAA,CAAY,CAAC,SAAD,CAAY,UAAZ,CAAwB,QAAQ,CAACrJ,CAAD,CAAU0B,CAAV,CAAoB,CAU9Dg7B,QAASA,EAAoB,CAACzM,CAAD,CAAM,CACjC,IAAI0M,EAAU1M,CAEVA,EAAAmM,aAAJ,GACEO,CAKA,CALUA,QAAsB,CAACjtC,CAAD;AAAOyc,CAAP,CAAe,CAC7C,MAAO8jB,EAAA,CAAIvgC,CAAJ,CAAUyc,CAAV,CADsC,CAK/C,CAFAwwB,CAAAje,QAEA,CAFkBuR,CAAAvR,QAElB,CADAie,CAAAhkC,SACA,CADmBs3B,CAAAt3B,SACnB,CAAAgkC,CAAA/d,OAAA,CAAiBqR,CAAArR,OANnB,CASA,OAAO+d,EAZ0B,CA4DnCC,QAASA,EAAuB,CAACC,CAAD,CAASpvB,CAAT,CAAe,CAC7C,IAD6C,IACpCljB,EAAI,CADgC,CAC7BW,EAAK2xC,CAAAvzC,OAArB,CAAoCiB,CAApC,CAAwCW,CAAxC,CAA4CX,CAAA,EAA5C,CAAiD,CAC/C,IAAIuP,EAAQ+iC,CAAA,CAAOtyC,CAAP,CACPuP,EAAAnB,SAAL,GACMmB,CAAA+iC,OAAJ,CACED,CAAA,CAAwB9iC,CAAA+iC,OAAxB,CAAsCpvB,CAAtC,CADF,CAEoC,EAFpC,GAEWA,CAAA9f,QAAA,CAAamM,CAAb,CAFX,EAGE2T,CAAAtf,KAAA,CAAU2L,CAAV,CAJJ,CAF+C,CAWjD,MAAO2T,EAZsC,CAe/CqvB,QAASA,EAAyB,CAAC9Y,CAAD,CAAW+Y,CAAX,CAA4B,CAE5D,MAAgB,KAAhB,EAAI/Y,CAAJ,EAA2C,IAA3C,EAAwB+Y,CAAxB,CACS/Y,CADT,GACsB+Y,CADtB,CAIwB,QAAxB,GAAI,MAAO/Y,EAAX,GAKEA,CAEI,CAFOsY,EAAA,CAAWtY,CAAX,CAEP,CAAoB,QAApB,GAAA,MAAOA,EAPb,EASW,CAAA,CATX,CAgBOA,CAhBP,GAgBoB+Y,CAhBpB,EAgBwC/Y,CAhBxC,GAgBqDA,CAhBrD,EAgBiE+Y,CAhBjE,GAgBqFA,CAtBzB,CAyB9DC,QAASA,EAAmB,CAACtpC,CAAD,CAAQ6c,CAAR,CAAkB+f,CAAlB,CAAkC2M,CAAlC,CAAoD,CAC9E,IAAIC,EAAmBD,CAAAE,SAAnBD,GACWD,CAAAE,SADXD,CACuCN,CAAA,CAAwBK,CAAAJ,OAAxB,CAAiD,EAAjD,CADvCK,CAAJ,CAGIE,CAEJ,IAAgC,CAAhC,GAAIF,CAAA5zC,OAAJ,CAAmC,CACjC,IAAI+zC,EAAgBP,CAApB,CACAI,EAAmBA,CAAA,CAAiB,CAAjB,CACnB,OAAOxpC,EAAAhH,OAAA,CAAa4wC,QAA6B,CAAC5pC,CAAD,CAAQ,CACvD,IAAI6pC,EAAgBL,CAAA,CAAiBxpC,CAAjB,CACfopC,EAAA,CAA0BS,CAA1B,CAAyCF,CAAzC,CAAL,GACED,CACA,CADaH,CAAA,CAAiBvpC,CAAjB,CACb,CAAA2pC,CAAA,CAAgBE,CAAhB;AAAiCjB,EAAA,CAAWiB,CAAX,CAFnC,CAIA,OAAOH,EANgD,CAAlD,CAOJ7sB,CAPI,CAOM+f,CAPN,CAH0B,CAcnC,IADA,IAAIkN,EAAwB,EAA5B,CACSjzC,EAAI,CADb,CACgBW,EAAKgyC,CAAA5zC,OAArB,CAA8CiB,CAA9C,CAAkDW,CAAlD,CAAsDX,CAAA,EAAtD,CACEizC,CAAA,CAAsBjzC,CAAtB,CAAA,CAA2BuyC,CAG7B,OAAOppC,EAAAhH,OAAA,CAAa+wC,QAA8B,CAAC/pC,CAAD,CAAQ,CAGxD,IAFA,IAAIgqC,EAAU,CAAA,CAAd,CAESnzC,EAAI,CAFb,CAEgBW,EAAKgyC,CAAA5zC,OAArB,CAA8CiB,CAA9C,CAAkDW,CAAlD,CAAsDX,CAAA,EAAtD,CAA2D,CACzD,IAAIgzC,EAAgBL,CAAA,CAAiB3yC,CAAjB,CAAA,CAAoBmJ,CAApB,CACpB,IAAIgqC,CAAJ,GAAgBA,CAAhB,CAA0B,CAACZ,CAAA,CAA0BS,CAA1B,CAAyCC,CAAA,CAAsBjzC,CAAtB,CAAzC,CAA3B,EACEizC,CAAA,CAAsBjzC,CAAtB,CAAA,CAA2BgzC,CAA3B,EAA4CjB,EAAA,CAAWiB,CAAX,CAHW,CAOvDG,CAAJ,GACEN,CADF,CACeH,CAAA,CAAiBvpC,CAAjB,CADf,CAIA,OAAO0pC,EAdiD,CAAnD,CAeJ7sB,CAfI,CAeM+f,CAfN,CAxBuE,CA0ChFqN,QAASA,EAAoB,CAACjqC,CAAD,CAAQ6c,CAAR,CAAkB+f,CAAlB,CAAkC2M,CAAlC,CAAoD,CAAA,IAC3Eje,CAD2E,CAClEb,CACb,OAAOa,EAAP,CAAiBtrB,CAAAhH,OAAA,CAAakxC,QAAqB,CAAClqC,CAAD,CAAQ,CACzD,MAAOupC,EAAA,CAAiBvpC,CAAjB,CADkD,CAA1C,CAEdmqC,QAAwB,CAACnzC,CAAD,CAAQozC,CAAR,CAAapqC,CAAb,CAAoB,CAC7CyqB,CAAA,CAAYzzB,CACRX,EAAA,CAAWwmB,CAAX,CAAJ,EACEA,CAAAzgB,MAAA,CAAe,IAAf,CAAqB3E,SAArB,CAEEe,EAAA,CAAUxB,CAAV,CAAJ,EACEgJ,CAAAqqC,aAAA,CAAmB,QAAQ,EAAG,CACxB7xC,CAAA,CAAUiyB,CAAV,CAAJ,EACEa,CAAA,EAF0B,CAA9B,CAN2C,CAF9B,CAcdsR,CAdc,CAF8D,CAmBjF0N,QAASA,EAA2B,CAACtqC,CAAD,CAAQ6c,CAAR,CAAkB+f,CAAlB,CAAkC2M,CAAlC,CAAoD,CAgBtFgB,QAASA,EAAY,CAACvzC,CAAD,CAAQ,CAC3B,IAAIwzC,EAAa,CAAA,CACjBv0C,EAAA,CAAQe,CAAR,CAAe,QAAQ,CAACsF,CAAD,CAAM,CACtB9D,CAAA,CAAU8D,CAAV,CAAL,GAAqBkuC,CAArB,CAAkC,CAAA,CAAlC,CAD2B,CAA7B,CAGA,OAAOA,EALoB,CAhByD,IAClFlf,CADkF,CACzEb,CACb,OAAOa,EAAP,CAAiBtrB,CAAAhH,OAAA,CAAakxC,QAAqB,CAAClqC,CAAD,CAAQ,CACzD,MAAOupC,EAAA,CAAiBvpC,CAAjB,CADkD,CAA1C;AAEdmqC,QAAwB,CAACnzC,CAAD,CAAQozC,CAAR,CAAapqC,CAAb,CAAoB,CAC7CyqB,CAAA,CAAYzzB,CACRX,EAAA,CAAWwmB,CAAX,CAAJ,EACEA,CAAAtmB,KAAA,CAAc,IAAd,CAAoBS,CAApB,CAA2BozC,CAA3B,CAAgCpqC,CAAhC,CAEEuqC,EAAA,CAAavzC,CAAb,CAAJ,EACEgJ,CAAAqqC,aAAA,CAAmB,QAAQ,EAAG,CACxBE,CAAA,CAAa9f,CAAb,CAAJ,EAA6Ba,CAAA,EADD,CAA9B,CAN2C,CAF9B,CAYdsR,CAZc,CAFqE,CAyBxF6N,QAASA,EAAqB,CAACzqC,CAAD,CAAQ6c,CAAR,CAAkB+f,CAAlB,CAAkC2M,CAAlC,CAAoD,CAChF,IAAIje,CACJ,OAAOA,EAAP,CAAiBtrB,CAAAhH,OAAA,CAAa0xC,QAAsB,CAAC1qC,CAAD,CAAQ,CAC1D,MAAOupC,EAAA,CAAiBvpC,CAAjB,CADmD,CAA3C,CAEd2qC,QAAyB,CAAC3zC,CAAD,CAAQozC,CAAR,CAAapqC,CAAb,CAAoB,CAC1C3J,CAAA,CAAWwmB,CAAX,CAAJ,EACEA,CAAAzgB,MAAA,CAAe,IAAf,CAAqB3E,SAArB,CAEF6zB,EAAA,EAJ8C,CAF/B,CAOdsR,CAPc,CAF+D,CAYlFgO,QAASA,EAAc,CAACrB,CAAD,CAAmBsB,CAAnB,CAAkC,CACvD,GAAKA,CAAAA,CAAL,CAAoB,MAAOtB,EAC3B,KAAIuB,EAAgBvB,CAAA5M,gBAApB,CAMI1gC,EAHA6uC,CAGK,GAHaR,CAGb,EAFLQ,CAEK,GAFab,CAEb,CAAec,QAAqC,CAAC/qC,CAAD,CAAQyY,CAAR,CAAgB,CAC3E,IAAIzhB,EAAQuyC,CAAA,CAAiBvpC,CAAjB,CAAwByY,CAAxB,CACZ,OAAOoyB,EAAA,CAAc7zC,CAAd,CAAqBgJ,CAArB,CAA4ByY,CAA5B,CAFoE,CAApE,CAGLuyB,QAAqC,CAAChrC,CAAD,CAAQyY,CAAR,CAAgB,CACvD,IAAIzhB,EAAQuyC,CAAA,CAAiBvpC,CAAjB,CAAwByY,CAAxB,CAAZ,CACI/d,EAASmwC,CAAA,CAAc7zC,CAAd,CAAqBgJ,CAArB,CAA4ByY,CAA5B,CAGb,OAAOjgB,EAAA,CAAUxB,CAAV,CAAA,CAAmB0D,CAAnB,CAA4B1D,CALoB,CASrDuyC,EAAA5M,gBAAJ,EACI4M,CAAA5M,gBADJ,GACyC2M,CADzC,CAEErtC,CAAA0gC,gBAFF,CAEuB4M,CAAA5M,gBAFvB,CAGYkO,CAAAxf,UAHZ,GAMEpvB,CAAA0gC,gBACA,CADqB2M,CACrB,CAAArtC,CAAAktC,OAAA;AAAY,CAACI,CAAD,CAPd,CAUA,OAAOttC,EA9BgD,CAhNK,IAC1DgvC,EAAgB,CACdtlC,IAAKqI,CAAArI,IADS,CAEdwhC,gBAAiB,CAAA,CAFH,CAD0C,CAK1D+D,EAAyB,CACvBvlC,IAAKqI,CAAArI,IADkB,CAEvBwhC,gBAAiB,CAAA,CAFM,CAoB7B,OAAO/5B,SAAe,CAACmvB,CAAD,CAAMsO,CAAN,CAAqB1D,CAArB,CAAsC,CAAA,IACtDoC,CADsD,CACpC4B,CADoC,CAC3BC,CAE/B,QAAQ,MAAO7O,EAAf,EACE,KAAK,QAAL,CACE6O,CAAA,CAAW7O,CAAX,CAAiBA,CAAAzrB,KAAA,EAEjB,KAAIoH,EAASivB,CAAA,CAAkB4B,CAAlB,CAAmCD,CAChDS,EAAA,CAAmBrxB,CAAA,CAAMkzB,CAAN,CAEd7B,EAAL,GACwB,GAsBtB,GAtBIhN,CAAAnhC,OAAA,CAAW,CAAX,CAsBJ,EAtB+C,GAsB/C,GAtB6BmhC,CAAAnhC,OAAA,CAAW,CAAX,CAsB7B,GArBE+vC,CACA,CADU,CAAA,CACV,CAAA5O,CAAA,CAAMA,CAAApd,UAAA,CAAc,CAAd,CAoBR,EAjBIksB,CAiBJ,CAjBmBlE,CAAA,CAAkB+D,CAAlB,CAA2CD,CAiB9D,CAhBIK,CAgBJ,CAhBY,IAAIC,EAAJ,CAAUF,CAAV,CAgBZ,CAdA9B,CAcA,CAdmB1sC,CADN2uC,IAAIC,EAAJD,CAAWF,CAAXE,CAAkBl/B,CAAlBk/B,CAA2BH,CAA3BG,CACM3uC,OAAA,CAAa0/B,CAAb,CAcnB,CAZIgN,CAAAtkC,SAAJ,CACEskC,CAAA5M,gBADF,CACqC8N,CADrC,CAEWU,CAAJ,EAGL5B,CACA,CADmBP,CAAA,CAAqBO,CAArB,CACnB,CAAAA,CAAA5M,gBAAA,CAAmC4M,CAAAve,QAAA,CACjCsf,CADiC,CACHL,CAL3B,EAMIV,CAAAJ,OANJ,GAOLI,CAAA5M,gBAPK,CAO8B2M,CAP9B,CAUP,CAAApxB,CAAA,CAAMkzB,CAAN,CAAA,CAAkB7B,CAvBpB,CAyBA,OAAOqB,EAAA,CAAerB,CAAf,CAAiCsB,CAAjC,CAET,MAAK,UAAL,CACE,MAAOD,EAAA,CAAerO,CAAf,CAAoBsO,CAApB,CAET,SACE,MAAOD,EAAA,CAAezyC,CAAf,CAAqB0yC,CAArB,CAtCX,CAH0D,CAzBE,CAApD,CANY,CA6c1Bp9B,QAASA,GAAU,EAAG,CAEpB,IAAAkI,KAAA;AAAY,CAAC,YAAD,CAAe,mBAAf,CAAoC,QAAQ,CAACrI,CAAD,CAAalB,CAAb,CAAgC,CACtF,MAAOs/B,GAAA,CAAS,QAAQ,CAACluB,CAAD,CAAW,CACjClQ,CAAAvU,WAAA,CAAsBykB,CAAtB,CADiC,CAA5B,CAEJpR,CAFI,CAD+E,CAA5E,CAFQ,CAStBuB,QAASA,GAAW,EAAG,CACrB,IAAAgI,KAAA,CAAY,CAAC,UAAD,CAAa,mBAAb,CAAkC,QAAQ,CAAC/J,CAAD,CAAWQ,CAAX,CAA8B,CAClF,MAAOs/B,GAAA,CAAS,QAAQ,CAACluB,CAAD,CAAW,CACjC5R,CAAAwT,MAAA,CAAe5B,CAAf,CADiC,CAA5B,CAEJpR,CAFI,CAD2E,CAAxE,CADS,CAgBvBs/B,QAASA,GAAQ,CAACC,CAAD,CAAWC,CAAX,CAA6B,CAE5CC,QAASA,EAAQ,CAAC7vC,CAAD,CAAO8vC,CAAP,CAAkBjU,CAAlB,CAA4B,CAE3C1nB,QAASA,EAAI,CAAClU,CAAD,CAAK,CAChB,MAAO,SAAQ,CAACjF,CAAD,CAAQ,CACjBmjC,CAAJ,GACAA,CACA,CADS,CAAA,CACT,CAAAl+B,CAAA1F,KAAA,CAAQyF,CAAR,CAAchF,CAAd,CAFA,CADqB,CADP,CADlB,IAAImjC,EAAS,CAAA,CASb,OAAO,CAAChqB,CAAA,CAAK27B,CAAL,CAAD,CAAkB37B,CAAA,CAAK0nB,CAAL,CAAlB,CAVoC,CA2B7CkU,QAASA,EAAO,EAAG,CACjB,IAAAlI,QAAA,CAAe,CAAE3O,OAAQ,CAAV,CADE,CA6BnB8W,QAASA,EAAU,CAAC71C,CAAD,CAAU8F,CAAV,CAAc,CAC/B,MAAO,SAAQ,CAACjF,CAAD,CAAQ,CACrBiF,CAAA1F,KAAA,CAAQJ,CAAR,CAAiBa,CAAjB,CADqB,CADQ,CA8BjCi1C,QAASA,EAAoB,CAAC3vB,CAAD,CAAQ,CAC/B4vB,CAAA5vB,CAAA4vB,iBAAJ,EAA+B5vB,CAAA6vB,QAA/B,GACA7vB,CAAA4vB,iBACA,CADyB,CAAA,CACzB,CAAAP,CAAA,CAAS,QAAQ,EAAG,CA3BO,IACvB1vC,CADuB,CACnBo7B,CADmB,CACV8U,CAEjBA,EAAA,CAwBmC7vB,CAxBzB6vB,QAwByB7vB;CAvBnC4vB,iBAAA,CAAyB,CAAA,CAuBU5vB,EAtBnC6vB,QAAA,CAAgB52C,CAChB,KAN2B,IAMlBsB,EAAI,CANc,CAMXW,EAAK20C,CAAAv2C,OAArB,CAAqCiB,CAArC,CAAyCW,CAAzC,CAA6C,EAAEX,CAA/C,CAAkD,CAChDwgC,CAAA,CAAU8U,CAAA,CAAQt1C,CAAR,CAAA,CAAW,CAAX,CACVoF,EAAA,CAAKkwC,CAAA,CAAQt1C,CAAR,CAAA,CAmB4BylB,CAnBjB4Y,OAAX,CACL,IAAI,CACE7+B,CAAA,CAAW4F,CAAX,CAAJ,CACEo7B,CAAAoB,QAAA,CAAgBx8B,CAAA,CAgBaqgB,CAhBVtlB,MAAH,CAAhB,CADF,CAE4B,CAArB,GAewBslB,CAfpB4Y,OAAJ,CACLmC,CAAAoB,QAAA,CAc6Bnc,CAdbtlB,MAAhB,CADK,CAGLqgC,CAAAjB,OAAA,CAY6B9Z,CAZdtlB,MAAf,CANA,CAQF,MAAOkG,CAAP,CAAU,CACVm6B,CAAAjB,OAAA,CAAel5B,CAAf,CACA,CAAA0uC,CAAA,CAAiB1uC,CAAjB,CAFU,CAXoC,CAqB9B,CAApB,CAFA,CADmC,CAMrCkvC,QAASA,EAAQ,EAAG,CAClB,IAAA/U,QAAA,CAAe,IAAI0U,CAEnB,KAAAtT,QAAA,CAAeuT,CAAA,CAAW,IAAX,CAAiB,IAAAvT,QAAjB,CACf,KAAArC,OAAA,CAAc4V,CAAA,CAAW,IAAX,CAAiB,IAAA5V,OAAjB,CACd,KAAAuH,OAAA,CAAcqO,CAAA,CAAW,IAAX,CAAiB,IAAArO,OAAjB,CALI,CA7FpB,IAAI0O,EAAW72C,CAAA,CAAO,IAAP,CAAa82C,SAAb,CAgCfP,EAAAjzB,UAAA,CAAoB,CAClByV,KAAMA,QAAQ,CAACge,CAAD,CAAcC,CAAd,CAA0BC,CAA1B,CAAwC,CACpD,IAAI/xC,EAAS,IAAI0xC,CAEjB,KAAAvI,QAAAsI,QAAA,CAAuB,IAAAtI,QAAAsI,QAAvB,EAA+C,EAC/C,KAAAtI,QAAAsI,QAAA1xC,KAAA,CAA0B,CAACC,CAAD,CAAS6xC,CAAT,CAAsBC,CAAtB,CAAkCC,CAAlC,CAA1B,CAC0B,EAA1B,CAAI,IAAA5I,QAAA3O,OAAJ;AAA6B+W,CAAA,CAAqB,IAAApI,QAArB,CAE7B,OAAOnpC,EAAA28B,QAP6C,CADpC,CAWlB,QAASqV,QAAQ,CAAClvB,CAAD,CAAW,CAC1B,MAAO,KAAA+Q,KAAA,CAAU,IAAV,CAAgB/Q,CAAhB,CADmB,CAXV,CAelB,UAAWmvB,QAAQ,CAACnvB,CAAD,CAAWivB,CAAX,CAAyB,CAC1C,MAAO,KAAAle,KAAA,CAAU,QAAQ,CAACv3B,CAAD,CAAQ,CAC/B,MAAO41C,EAAA,CAAe51C,CAAf,CAAsB,CAAA,CAAtB,CAA4BwmB,CAA5B,CADwB,CAA1B,CAEJ,QAAQ,CAAC7B,CAAD,CAAQ,CACjB,MAAOixB,EAAA,CAAejxB,CAAf,CAAsB,CAAA,CAAtB,CAA6B6B,CAA7B,CADU,CAFZ,CAIJivB,CAJI,CADmC,CAf1B,CAqEpBL,EAAAtzB,UAAA,CAAqB,CACnB2f,QAASA,QAAQ,CAACn8B,CAAD,CAAM,CACjB,IAAA+6B,QAAAwM,QAAA3O,OAAJ,GACI54B,CAAJ,GAAY,IAAA+6B,QAAZ,CACE,IAAAwV,SAAA,CAAcR,CAAA,CACZ,QADY,CAGZ/vC,CAHY,CAAd,CADF,CAME,IAAAwwC,UAAA,CAAexwC,CAAf,CAPF,CADqB,CADJ,CAcnBwwC,UAAWA,QAAQ,CAACxwC,CAAD,CAAM,CAAA,IACnBiyB,CADmB,CACb4G,CAEVA,EAAA,CAAM0W,CAAA,CAAS,IAAT,CAAe,IAAAiB,UAAf,CAA+B,IAAAD,SAA/B,CACN,IAAI,CACF,GAAKp0C,CAAA,CAAS6D,CAAT,CAAL,EAAsBjG,CAAA,CAAWiG,CAAX,CAAtB,CAAwCiyB,CAAA,CAAOjyB,CAAP,EAAcA,CAAAiyB,KAClDl4B,EAAA,CAAWk4B,CAAX,CAAJ,EACE,IAAA8I,QAAAwM,QAAA3O,OACA,CAD+B,EAC/B,CAAA3G,CAAAh4B,KAAA,CAAU+F,CAAV,CAAe64B,CAAA,CAAI,CAAJ,CAAf,CAAuBA,CAAA,CAAI,CAAJ,CAAvB,CAA+B,IAAAwI,OAA/B,CAFF,GAIE,IAAAtG,QAAAwM,QAAA7sC,MAEA;AAF6BsF,CAE7B,CADA,IAAA+6B,QAAAwM,QAAA3O,OACA,CAD8B,CAC9B,CAAA+W,CAAA,CAAqB,IAAA5U,QAAAwM,QAArB,CANF,CAFE,CAUF,MAAO3mC,CAAP,CAAU,CACVi4B,CAAA,CAAI,CAAJ,CAAA,CAAOj4B,CAAP,CACA,CAAA0uC,CAAA,CAAiB1uC,CAAjB,CAFU,CAdW,CAdN,CAkCnBk5B,OAAQA,QAAQ,CAACvzB,CAAD,CAAS,CACnB,IAAAw0B,QAAAwM,QAAA3O,OAAJ,EACA,IAAA2X,SAAA,CAAchqC,CAAd,CAFuB,CAlCN,CAuCnBgqC,SAAUA,QAAQ,CAAChqC,CAAD,CAAS,CACzB,IAAAw0B,QAAAwM,QAAA7sC,MAAA,CAA6B6L,CAC7B,KAAAw0B,QAAAwM,QAAA3O,OAAA,CAA8B,CAC9B+W,EAAA,CAAqB,IAAA5U,QAAAwM,QAArB,CAHyB,CAvCR,CA6CnBlG,OAAQA,QAAQ,CAACoP,CAAD,CAAW,CACzB,IAAIlT,EAAY,IAAAxC,QAAAwM,QAAAsI,QAEoB,EAApC,EAAK,IAAA9U,QAAAwM,QAAA3O,OAAL,EAA0C2E,CAA1C,EAAuDA,CAAAjkC,OAAvD,EACE+1C,CAAA,CAAS,QAAQ,EAAG,CAElB,IAFkB,IACdnuB,CADc,CACJ9iB,CADI,CAET7D,EAAI,CAFK,CAEFW,EAAKqiC,CAAAjkC,OAArB,CAAuCiB,CAAvC,CAA2CW,CAA3C,CAA+CX,CAAA,EAA/C,CAAoD,CAClD6D,CAAA,CAASm/B,CAAA,CAAUhjC,CAAV,CAAA,CAAa,CAAb,CACT2mB,EAAA,CAAWqc,CAAA,CAAUhjC,CAAV,CAAA,CAAa,CAAb,CACX,IAAI,CACF6D,CAAAijC,OAAA,CAActnC,CAAA,CAAWmnB,CAAX,CAAA,CAAuBA,CAAA,CAASuvB,CAAT,CAAvB,CAA4CA,CAA1D,CADE,CAEF,MAAO7vC,CAAP,CAAU,CACV0uC,CAAA,CAAiB1uC,CAAjB,CADU,CALsC,CAFlC,CAApB,CAJuB,CA7CR,CA2GrB,KAAI8vC,EAAcA,QAAoB,CAACh2C,CAAD,CAAQi2C,CAAR,CAAkB,CACtD,IAAIvyC,EAAS,IAAI0xC,CACba,EAAJ,CACEvyC,CAAA+9B,QAAA,CAAezhC,CAAf,CADF;AAGE0D,CAAA07B,OAAA,CAAcp/B,CAAd,CAEF,OAAO0D,EAAA28B,QAP+C,CAAxD,CAUIuV,EAAiBA,QAAuB,CAAC51C,CAAD,CAAQk2C,CAAR,CAAoB1vB,CAApB,CAA8B,CACxE,IAAI2vB,EAAiB,IACrB,IAAI,CACE92C,CAAA,CAAWmnB,CAAX,CAAJ,GAA0B2vB,CAA1B,CAA2C3vB,CAAA,EAA3C,CADE,CAEF,MAAOtgB,CAAP,CAAU,CACV,MAAO8vC,EAAA,CAAY9vC,CAAZ,CAAe,CAAA,CAAf,CADG,CAGZ,MAAkBiwC,EAAlB,EAt8YY92C,CAAA,CAs8YM82C,CAt8YK5e,KAAX,CAs8YZ,CACS4e,CAAA5e,KAAA,CAAoB,QAAQ,EAAG,CACpC,MAAOye,EAAA,CAAYh2C,CAAZ,CAAmBk2C,CAAnB,CAD6B,CAA/B,CAEJ,QAAQ,CAACvxB,CAAD,CAAQ,CACjB,MAAOqxB,EAAA,CAAYrxB,CAAZ,CAAmB,CAAA,CAAnB,CADU,CAFZ,CADT,CAOSqxB,CAAA,CAAYh2C,CAAZ,CAAmBk2C,CAAnB,CAd+D,CAV1E,CA2CI5V,EAAOA,QAAQ,CAACtgC,CAAD,CAAQwmB,CAAR,CAAkB4vB,CAAlB,CAA2BX,CAA3B,CAAyC,CAC1D,IAAI/xC,EAAS,IAAI0xC,CACjB1xC,EAAA+9B,QAAA,CAAezhC,CAAf,CACA,OAAO0D,EAAA28B,QAAA9I,KAAA,CAAoB/Q,CAApB,CAA8B4vB,CAA9B,CAAuCX,CAAvC,CAHmD,CA3C5D,CAyFIY,EAAKA,QAASC,EAAC,CAACC,CAAD,CAAW,CAC5B,GAAK,CAAAl3C,CAAA,CAAWk3C,CAAX,CAAL,CACE,KAAMlB,EAAA,CAAS,SAAT,CAAsDkB,CAAtD,CAAN,CAGF,GAAM,EAAA,IAAA,WAAgBD,EAAhB,CAAN,CAEE,MAAO,KAAIA,CAAJ,CAAMC,CAAN,CAGT,KAAI/U,EAAW,IAAI4T,CAUnBmB,EAAA,CARAzB,QAAkB,CAAC90C,CAAD,CAAQ,CACxBwhC,CAAAC,QAAA,CAAiBzhC,CAAjB,CADwB,CAQ1B,CAJA6gC,QAAiB,CAACh1B,CAAD,CAAS,CACxB21B,CAAApC,OAAA,CAAgBvzB,CAAhB,CADwB,CAI1B,CAEA,OAAO21B,EAAAnB,QAtBqB,CAyB9BgW,EAAAjuB,MAAA,CA1SYA,QAAQ,EAAG,CACrB,MAAO,KAAIgtB,CADU,CA2SvBiB,EAAAjX,OAAA,CAzHaA,QAAQ,CAACvzB,CAAD,CAAS,CAC5B,IAAInI,EAAS,IAAI0xC,CACjB1xC;CAAA07B,OAAA,CAAcvzB,CAAd,CACA,OAAOnI,EAAA28B,QAHqB,CA0H9BgW,EAAA/V,KAAA,CAAUA,CACV+V,EAAAG,IAAA,CApDAA,QAAY,CAACC,CAAD,CAAW,CAAA,IACjBjV,EAAW,IAAI4T,CADE,CAEjB1mC,EAAU,CAFO,CAGjBgoC,EAAU13C,CAAA,CAAQy3C,CAAR,CAAA,CAAoB,EAApB,CAAyB,EAEvCx3C,EAAA,CAAQw3C,CAAR,CAAkB,QAAQ,CAACpW,CAAD,CAAUjhC,CAAV,CAAe,CACvCsP,CAAA,EACA4xB,EAAA,CAAKD,CAAL,CAAA9I,KAAA,CAAmB,QAAQ,CAACv3B,CAAD,CAAQ,CAC7B02C,CAAAp3C,eAAA,CAAuBF,CAAvB,CAAJ,GACAs3C,CAAA,CAAQt3C,CAAR,CACA,CADeY,CACf,CAAM,EAAE0O,CAAR,EAAkB8yB,CAAAC,QAAA,CAAiBiV,CAAjB,CAFlB,CADiC,CAAnC,CAIG,QAAQ,CAAC7qC,CAAD,CAAS,CACd6qC,CAAAp3C,eAAA,CAAuBF,CAAvB,CAAJ,EACAoiC,CAAApC,OAAA,CAAgBvzB,CAAhB,CAFkB,CAJpB,CAFuC,CAAzC,CAYgB,EAAhB,GAAI6C,CAAJ,EACE8yB,CAAAC,QAAA,CAAiBiV,CAAjB,CAGF,OAAOlV,EAAAnB,QArBc,CAsDvB,OAAOgW,EAxUqC,CA2U9Cx+B,QAASA,GAAa,EAAG,CACvB,IAAA8G,KAAA,CAAY,CAAC,SAAD,CAAY,UAAZ,CAAwB,QAAQ,CAACjH,CAAD,CAAUF,CAAV,CAAoB,CAC9D,IAAIm/B,EAAwBj/B,CAAAi/B,sBAAxBA,EACwBj/B,CAAAk/B,4BAD5B,CAGIC,EAAuBn/B,CAAAm/B,qBAAvBA,EACuBn/B,CAAAo/B,2BADvBD,EAEuBn/B,CAAAq/B,kCAL3B,CAOIC,EAAe,CAAEL,CAAAA,CAPrB,CAQIM,EAAMD,CAAA,CACN,QAAQ,CAAC/xC,CAAD,CAAK,CACX,IAAIykB;AAAKitB,CAAA,CAAsB1xC,CAAtB,CACT,OAAO,SAAQ,EAAG,CAChB4xC,CAAA,CAAqBntB,CAArB,CADgB,CAFP,CADP,CAON,QAAQ,CAACzkB,CAAD,CAAK,CACX,IAAIiyC,EAAQ1/B,CAAA,CAASvS,CAAT,CAAa,KAAb,CAAoB,CAAA,CAApB,CACZ,OAAO,SAAQ,EAAG,CAChBuS,CAAAgR,OAAA,CAAgB0uB,CAAhB,CADgB,CAFP,CAOjBD,EAAA5yB,UAAA,CAAgB2yB,CAEhB,OAAOC,EAzBuD,CAApD,CADW,CAiGzB1gC,QAASA,GAAkB,EAAG,CAa5B4gC,QAASA,EAAqB,CAACn2C,CAAD,CAAS,CACrCo2C,QAASA,EAAU,EAAG,CACpB,IAAAC,WAAA,CAAkB,IAAAC,cAAlB,CACI,IAAAC,YADJ,CACuB,IAAAC,YADvB,CAC0C,IAC1C,KAAAC,YAAA,CAAmB,EACnB,KAAAC,gBAAA,CAAuB,EACvB,KAAAC,gBAAA,CAAuB,CACvB,KAAAC,IAAA,CAj8ZG,EAAE13C,EAk8ZL,KAAA23C,aAAA,CAAoB,IAPA,CAStBT,CAAAt1B,UAAA,CAAuB9gB,CACvB,OAAOo2C,EAX8B,CAZvC,IAAIU,EAAM,EAAV,CACIC,EAAmBv5C,CAAA,CAAO,YAAP,CADvB,CAEIw5C,EAAiB,IAFrB,CAGIC,EAAe,IAEnB,KAAAC,UAAA,CAAiBC,QAAQ,CAACn4C,CAAD,CAAQ,CAC3BS,SAAA7B,OAAJ,GACEk5C,CADF,CACQ93C,CADR,CAGA,OAAO83C,EAJwB,CAqBjC,KAAAn5B,KAAA,CAAY,CAAC,WAAD,CAAc,mBAAd;AAAmC,QAAnC,CAA6C,UAA7C,CACR,QAAQ,CAACuD,CAAD,CAAY9M,CAAZ,CAA+BgB,CAA/B,CAAuCxB,CAAvC,CAAiD,CAE3DwjC,QAASA,EAAiB,CAACC,CAAD,CAAS,CAC/BA,CAAAC,aAAA1gB,YAAA,CAAkC,CAAA,CADH,CA+CnC2gB,QAASA,EAAK,EAAG,CACf,IAAAX,IAAA,CA3/ZG,EAAE13C,EA4/ZL,KAAAqhC,QAAA,CAAe,IAAAiX,QAAf,CAA8B,IAAAnB,WAA9B,CACe,IAAAC,cADf,CACoC,IAAAmB,cADpC,CAEe,IAAAlB,YAFf,CAEkC,IAAAC,YAFlC,CAEqD,IACrD,KAAAkB,MAAA,CAAa,IACb,KAAA9gB,YAAA,CAAmB,CAAA,CACnB,KAAA6f,YAAA,CAAmB,EACnB,KAAAC,gBAAA,CAAuB,EACvB,KAAA1rB,kBAAA,CAAyB,IATV,CAonCjB2sB,QAASA,EAAU,CAACC,CAAD,CAAQ,CACzB,GAAItiC,CAAAirB,QAAJ,CACE,KAAMwW,EAAA,CAAiB,QAAjB,CAAsDzhC,CAAAirB,QAAtD,CAAN,CAGFjrB,CAAAirB,QAAA,CAAqBqX,CALI,CAa3BC,QAASA,EAAsB,CAACC,CAAD,CAAU3S,CAAV,CAAiBr+B,CAAjB,CAAuB,CACpD,EACEgxC,EAAApB,gBAAA,CAAwB5vC,CAAxB,CAEA,EAFiCq+B,CAEjC,CAAsC,CAAtC,GAAI2S,CAAApB,gBAAA,CAAwB5vC,CAAxB,CAAJ,EACE,OAAOgxC,CAAApB,gBAAA,CAAwB5vC,CAAxB,CAJX;MAMUgxC,CANV,CAMoBA,CAAAN,QANpB,CADoD,CActDO,QAASA,EAAY,EAAG,EAExBC,QAASA,EAAe,EAAG,CACzB,IAAA,CAAOC,CAAAr6C,OAAP,CAAA,CACE,GAAI,CACFq6C,CAAAz3B,MAAA,EAAA,EADE,CAEF,MAAOtb,CAAP,CAAU,CACVkP,CAAA,CAAkBlP,CAAlB,CADU,CAId+xC,CAAA,CAAe,IARU,CAW3BiB,QAASA,EAAkB,EAAG,CACP,IAArB,GAAIjB,CAAJ,GACEA,CADF,CACiBrjC,CAAAwT,MAAA,CAAe,QAAQ,EAAG,CACvC9R,CAAApN,OAAA,CAAkB8vC,CAAlB,CADuC,CAA1B,CADjB,CAD4B,CAxnC9BT,CAAAz2B,UAAA,CAAkB,CAChB9V,YAAausC,CADG,CA+BhB9pB,KAAMA,QAAQ,CAAC0qB,CAAD,CAAUn4C,CAAV,CAAkB,CAC9B,IAAIo4C,CAEJp4C,EAAA,CAASA,CAAT,EAAmB,IAEfm4C,EAAJ,EACEC,CACA,CADQ,IAAIb,CACZ,CAAAa,CAAAV,MAAA,CAAc,IAAAA,MAFhB,GAMO,IAAAb,aAGL,GAFE,IAAAA,aAEF,CAFsBV,CAAA,CAAsB,IAAtB,CAEtB,EAAAiC,CAAA,CAAQ,IAAI,IAAAvB,aATd,CAWAuB,EAAAZ,QAAA,CAAgBx3C,CAChBo4C,EAAAX,cAAA,CAAsBz3C,CAAAw2C,YAClBx2C,EAAAu2C,YAAJ,EACEv2C,CAAAw2C,YAAAF,cACA,CADmC8B,CACnC,CAAAp4C,CAAAw2C,YAAA,CAAqB4B,CAFvB,EAIEp4C,CAAAu2C,YAJF,CAIuBv2C,CAAAw2C,YAJvB,CAI4C4B,CAQ5C,EAAID,CAAJ,EAAen4C,CAAf,EAAyB,IAAzB,GAA+Bo4C,CAAA5kB,IAAA,CAAU,UAAV,CAAsB4jB,CAAtB,CAE/B,OAAOgB,EAhCuB,CA/BhB;AAsLhBp3C,OAAQA,QAAQ,CAACq3C,CAAD,CAAWxzB,CAAX,CAAqB+f,CAArB,CAAqC,CACnD,IAAI37B,EAAMmM,CAAA,CAAOijC,CAAP,CAEV,IAAIpvC,CAAA07B,gBAAJ,CACE,MAAO17B,EAAA07B,gBAAA,CAAoB,IAApB,CAA0B9f,CAA1B,CAAoC+f,CAApC,CAAoD37B,CAApD,CAJ0C,KAO/ClH,EADQiG,IACAquC,WAPuC,CAQ/CiC,EAAU,CACRr0C,GAAI4gB,CADI,CAER0zB,KAAMR,CAFE,CAGR9uC,IAAKA,CAHG,CAIRs7B,IAAK8T,CAJG,CAKRG,GAAI,CAAE5T,CAAAA,CALE,CAQdoS,EAAA,CAAiB,IAEZ34C,EAAA,CAAWwmB,CAAX,CAAL,GACEyzB,CAAAr0C,GADF,CACe9D,CADf,CAIK4B,EAAL,GACEA,CADF,CAhBYiG,IAiBFquC,WADV,CAC6B,EAD7B,CAKAt0C,EAAA0F,QAAA,CAAc6wC,CAAd,CAEA,OAAOG,SAAwB,EAAG,CAChC32C,EAAA,CAAYC,CAAZ,CAAmBu2C,CAAnB,CACAtB,EAAA,CAAiB,IAFe,CA7BiB,CAtLrC,CAkPhBnS,YAAaA,QAAQ,CAAC6T,CAAD,CAAmB7zB,CAAnB,CAA6B,CAwChD8zB,QAASA,EAAgB,EAAG,CAC1BC,CAAA,CAA0B,CAAA,CAEtBC,EAAJ,EACEA,CACA,CADW,CAAA,CACX,CAAAh0B,CAAA,CAASi0B,CAAT,CAAoBA,CAApB,CAA+B90C,CAA/B,CAFF,EAIE6gB,CAAA,CAASi0B,CAAT,CAAoB/T,CAApB,CAA+B/gC,CAA/B,CAPwB,CAvC5B,IAAI+gC,EAAgB/iB,KAAJ,CAAU02B,CAAA96C,OAAV,CAAhB,CACIk7C,EAAgB92B,KAAJ,CAAU02B,CAAA96C,OAAV,CADhB,CAEIm7C,EAAgB,EAFpB,CAGI/0C,EAAO,IAHX,CAII40C,EAA0B,CAAA,CAJ9B,CAKIC,EAAW,CAAA,CAEf,IAAKj7C,CAAA86C,CAAA96C,OAAL,CAA8B,CAE5B,IAAIo7C,EAAa,CAAA,CACjBh1C,EAAAjD,WAAA,CAAgB,QAAQ,EAAG,CACrBi4C,CAAJ,EAAgBn0B,CAAA,CAASi0B,CAAT,CAAoBA,CAApB,CAA+B90C,CAA/B,CADS,CAA3B,CAGA,OAAOi1C,SAA6B,EAAG,CACrCD,CAAA,CAAa,CAAA,CADwB,CANX,CAW9B,GAAgC,CAAhC,GAAIN,CAAA96C,OAAJ,CAEE,MAAO,KAAAoD,OAAA,CAAY03C,CAAA,CAAiB,CAAjB,CAAZ;AAAiCC,QAAyB,CAAC35C,CAAD,CAAQw5B,CAAR,CAAkBxwB,CAAlB,CAAyB,CACxF8wC,CAAA,CAAU,CAAV,CAAA,CAAe95C,CACf+lC,EAAA,CAAU,CAAV,CAAA,CAAevM,CACf3T,EAAA,CAASi0B,CAAT,CAAqB95C,CAAD,GAAWw5B,CAAX,CAAuBsgB,CAAvB,CAAmC/T,CAAvD,CAAkE/8B,CAAlE,CAHwF,CAAnF,CAOT/J,EAAA,CAAQy6C,CAAR,CAA0B,QAAQ,CAACQ,CAAD,CAAOr6C,CAAP,CAAU,CAC1C,IAAIs6C,EAAYn1C,CAAAhD,OAAA,CAAYk4C,CAAZ,CAAkBE,QAA4B,CAACp6C,CAAD,CAAQw5B,CAAR,CAAkB,CAC9EsgB,CAAA,CAAUj6C,CAAV,CAAA,CAAeG,CACf+lC,EAAA,CAAUlmC,CAAV,CAAA,CAAe25B,CACVogB,EAAL,GACEA,CACA,CAD0B,CAAA,CAC1B,CAAA50C,CAAAjD,WAAA,CAAgB43C,CAAhB,CAFF,CAH8E,CAAhE,CAQhBI,EAAAt2C,KAAA,CAAmB02C,CAAnB,CAT0C,CAA5C,CAuBA,OAAOF,SAA6B,EAAG,CACrC,IAAA,CAAOF,CAAAn7C,OAAP,CAAA,CACEm7C,CAAAv4B,MAAA,EAAA,EAFmC,CAnDS,CAlPlC,CAoWhB+S,iBAAkBA,QAAQ,CAAC71B,CAAD,CAAMmnB,CAAN,CAAgB,CAoBxCw0B,QAASA,EAA2B,CAACC,CAAD,CAAS,CAC3ChhB,CAAA,CAAWghB,CADgC,KAE5Bl7C,CAF4B,CAEvBm7C,CAFuB,CAEdC,CAFc,CAELC,CAGtC,IAAI,CAAAl5C,CAAA,CAAY+3B,CAAZ,CAAJ,CAAA,CAEA,GAAK73B,CAAA,CAAS63B,CAAT,CAAL,CAKO,GAAI76B,EAAA,CAAY66B,CAAZ,CAAJ,CAgBL,IAfIE,CAeK35B,GAfQ66C,CAeR76C,GAbP25B,CAEA,CAFWkhB,CAEX,CADAC,CACA,CADYnhB,CAAA56B,OACZ,CAD8B,CAC9B,CAAAg8C,CAAA,EAWO/6C,EARTg7C,CAQSh7C,CARGy5B,CAAA16B,OAQHiB,CANL86C,CAMK96C,GANSg7C,CAMTh7C,GAJP+6C,CAAA,EACA,CAAAphB,CAAA56B,OAAA,CAAkB+7C,CAAlB,CAA8BE,CAGvBh7C,EAAAA,CAAAA,CAAI,CAAb,CAAgBA,CAAhB,CAAoBg7C,CAApB,CAA+Bh7C,CAAA,EAA/B,CACE46C,CAIA,CAJUjhB,CAAA,CAAS35B,CAAT,CAIV,CAHA26C,CAGA,CAHUlhB,CAAA,CAASz5B,CAAT,CAGV,CADA06C,CACA,CADWE,CACX,GADuBA,CACvB,EADoCD,CACpC,GADgDA,CAChD,CAAKD,CAAL,EAAiBE,CAAjB,GAA6BD,CAA7B,GACEI,CAAA,EACA,CAAAphB,CAAA,CAAS35B,CAAT,CAAA,CAAc26C,CAFhB,CArBG,KA0BA,CACDhhB,CAAJ,GAAiBshB,CAAjB,GAEEthB,CAEA,CAFWshB,CAEX,CAF4B,EAE5B,CADAH,CACA,CADY,CACZ,CAAAC,CAAA,EAJF,CAOAC,EAAA,CAAY,CACZ,KAAKz7C,CAAL,GAAYk6B,EAAZ,CACMA,CAAAh6B,eAAA,CAAwBF,CAAxB,CAAJ,GACEy7C,CAAA,EAIA,CAHAL,CAGA,CAHUlhB,CAAA,CAASl6B,CAAT,CAGV,CAFAq7C,CAEA;AAFUjhB,CAAA,CAASp6B,CAAT,CAEV,CAAIA,CAAJ,GAAWo6B,EAAX,EACE+gB,CACA,CADWE,CACX,GADuBA,CACvB,EADoCD,CACpC,GADgDA,CAChD,CAAKD,CAAL,EAAiBE,CAAjB,GAA6BD,CAA7B,GACEI,CAAA,EACA,CAAAphB,CAAA,CAASp6B,CAAT,CAAA,CAAgBo7C,CAFlB,CAFF,GAOEG,CAAA,EAEA,CADAnhB,CAAA,CAASp6B,CAAT,CACA,CADgBo7C,CAChB,CAAAI,CAAA,EATF,CALF,CAkBF,IAAID,CAAJ,CAAgBE,CAAhB,CAGE,IAAKz7C,CAAL,GADAw7C,EAAA,EACYphB,CAAAA,CAAZ,CACOF,CAAAh6B,eAAA,CAAwBF,CAAxB,CAAL,GACEu7C,CAAA,EACA,CAAA,OAAOnhB,CAAA,CAASp6B,CAAT,CAFT,CAhCC,CA/BP,IACMo6B,EAAJ,GAAiBF,CAAjB,GACEE,CACA,CADWF,CACX,CAAAshB,CAAA,EAFF,CAqEF,OAAOA,EAxEP,CAL2C,CAnB7CP,CAAAhmB,UAAA,CAAwC,CAAA,CAExC,KAAIrvB,EAAO,IAAX,CAEIs0B,CAFJ,CAKIE,CALJ,CAOIuhB,CAPJ,CASIC,EAAuC,CAAvCA,CAAqBn1B,CAAAjnB,OATzB,CAUIg8C,EAAiB,CAVrB,CAWIK,EAAiB7kC,CAAA,CAAO1X,CAAP,CAAY27C,CAAZ,CAXrB,CAYIK,EAAgB,EAZpB,CAaII,EAAiB,EAbrB,CAcII,EAAU,CAAA,CAdd,CAeIP,EAAY,CA+GhB,OAAO,KAAA34C,OAAA,CAAYi5C,CAAZ,CA7BPE,QAA+B,EAAG,CAC5BD,CAAJ,EACEA,CACA,CADU,CAAA,CACV,CAAAr1B,CAAA,CAASyT,CAAT,CAAmBA,CAAnB,CAA6Bt0B,CAA7B,CAFF,EAIE6gB,CAAA,CAASyT,CAAT,CAAmByhB,CAAnB,CAAiC/1C,CAAjC,CAIF,IAAIg2C,CAAJ,CACE,GAAKv5C,CAAA,CAAS63B,CAAT,CAAL,CAGO,GAAI76B,EAAA,CAAY66B,CAAZ,CAAJ,CAA2B,CAChCyhB,CAAA,CAAmB/3B,KAAJ,CAAUsW,CAAA16B,OAAV,CACf,KAAS,IAAAiB,EAAI,CAAb,CAAgBA,CAAhB,CAAoBy5B,CAAA16B,OAApB,CAAqCiB,CAAA,EAArC,CACEk7C,CAAA,CAAal7C,CAAb,CAAA,CAAkBy5B,CAAA,CAASz5B,CAAT,CAHY,CAA3B,IAOL,KAAST,CAAT,GADA27C,EACgBzhB,CADD,EACCA,CAAAA,CAAhB,CACMh6B,EAAAC,KAAA,CAAoB+5B,CAApB,CAA8Bl6B,CAA9B,CAAJ,GACE27C,CAAA,CAAa37C,CAAb,CADF,CACsBk6B,CAAA,CAASl6B,CAAT,CADtB,CAXJ,KAEE27C,EAAA,CAAezhB,CAZa,CA6B3B,CAjIiC,CApW1B,CA2hBhByU,QAASA,QAAQ,EAAG,CAAA,IACdqN,CADc,CACPp7C,CADO,CACAu5C,CADA,CAEd8B,CAFc,CAGdz8C,CAHc,CAId08C,CAJc,CAIPC,EAAMzD,CAJC,CAKRgB,CALQ,CAMd0C,EAAW,EANG,CAOdC,CAPc,CAOEC,CAEpB/C,EAAA,CAAW,SAAX,CAEA/jC,EAAA2S,iBAAA,EAEI;IAAJ,GAAajR,CAAb,EAA4C,IAA5C,GAA2B2hC,CAA3B,GAGErjC,CAAAwT,MAAAI,OAAA,CAAsByvB,CAAtB,CACA,CAAAe,CAAA,EAJF,CAOAhB,EAAA,CAAiB,IAEjB,GAAG,CACDsD,CAAA,CAAQ,CAAA,CAGR,KAFAxC,CAEA,CArB0BrL,IAqB1B,CAAOkO,CAAA/8C,OAAP,CAAA,CAA0B,CACxB,GAAI,CACF88C,CACA,CADYC,CAAAn6B,MAAA,EACZ,CAAAk6B,CAAA1yC,MAAA4yC,MAAA,CAAsBF,CAAA5e,WAAtB,CAA4C4e,CAAAj6B,OAA5C,CAFE,CAGF,MAAOvb,CAAP,CAAU,CACVkP,CAAA,CAAkBlP,CAAlB,CADU,CAGZ8xC,CAAA,CAAiB,IAPO,CAU1B,CAAA,CACA,EAAG,CACD,GAAKqD,CAAL,CAAgBvC,CAAAzB,WAAhB,CAGE,IADAz4C,CACA,CADSy8C,CAAAz8C,OACT,CAAOA,CAAA,EAAP,CAAA,CACE,GAAI,CAIF,GAHAw8C,CAGA,CAHQC,CAAA,CAASz8C,CAAT,CAGR,CACE,IAAKoB,CAAL,CAAao7C,CAAAnxC,IAAA,CAAU6uC,CAAV,CAAb,KAAsCS,CAAtC,CAA6C6B,CAAA7B,KAA7C,GACM,EAAA6B,CAAA5B,GAAA,CACIn1C,EAAA,CAAOrE,CAAP,CAAcu5C,CAAd,CADJ,CAEsB,QAFtB,GAEK,MAAOv5C,EAFZ,EAEkD,QAFlD,GAEkC,MAAOu5C,EAFzC,EAGQsC,KAAA,CAAM77C,CAAN,CAHR,EAGwB67C,KAAA,CAAMtC,CAAN,CAHxB,CADN,CAKE+B,CAIA,CAJQ,CAAA,CAIR,CAHAtD,CAGA,CAHiBoD,CAGjB,CAFAA,CAAA7B,KAEA,CAFa6B,CAAA5B,GAAA,CAAWr2C,EAAA,CAAKnD,CAAL,CAAY,IAAZ,CAAX,CAA+BA,CAE5C,CADAo7C,CAAAn2C,GAAA,CAASjF,CAAT,CAAkBu5C,CAAD,GAAUR,CAAV,CAA0B/4C,CAA1B,CAAkCu5C,CAAnD,CAA0DT,CAA1D,CACA,CAAU,CAAV,CAAIyC,CAAJ,GACEE,CAEA,CAFS,CAET,CAFaF,CAEb,CADKC,CAAA,CAASC,CAAT,CACL,GADuBD,CAAA,CAASC,CAAT,CACvB,CAD0C,EAC1C,EAAAD,CAAA,CAASC,CAAT,CAAAh4C,KAAA,CAAsB,CACpBq4C,IAAKz8C,CAAA,CAAW+7C,CAAA7V,IAAX,CAAA,CAAwB,MAAxB,EAAkC6V,CAAA7V,IAAAz9B,KAAlC,EAAoDszC,CAAA7V,IAAA3jC,SAAA,EAApD,EAA4Ew5C,CAAA7V,IAD7D,CAEpBphB,OAAQnkB,CAFY,CAGpBokB,OAAQm1B,CAHY,CAAtB,CAHF,CATF,KAkBO,IAAI6B,CAAJ;AAAcpD,CAAd,CAA8B,CAGnCsD,CAAA,CAAQ,CAAA,CACR,OAAM,CAJ6B,CAvBrC,CA8BF,MAAOp1C,CAAP,CAAU,CACVkP,CAAA,CAAkBlP,CAAlB,CADU,CAShB,GAAM,EAAA61C,CAAA,CAAQjD,CAAAvB,YAAR,EACDuB,CADC,GA5EkBrL,IA4ElB,EACqBqL,CAAAxB,cADrB,CAAN,CAEE,IAAA,CAAOwB,CAAP,GA9EsBrL,IA8EtB,EAA+B,EAAAsO,CAAA,CAAOjD,CAAAxB,cAAP,CAA/B,CAAA,CACEwB,CAAA,CAAUA,CAAAN,QA/Cb,CAAH,MAkDUM,CAlDV,CAkDoBiD,CAlDpB,CAsDA,KAAKT,CAAL,EAAcK,CAAA/8C,OAAd,GAAsC,CAAA28C,CAAA,EAAtC,CAEE,KAieNjlC,EAAAirB,QAjeY,CAieS,IAjeT,CAAAwW,CAAA,CAAiB,QAAjB,CAGFD,CAHE,CAGG0D,CAHH,CAAN,CAvED,CAAH,MA6ESF,CA7ET,EA6EkBK,CAAA/8C,OA7ElB,CAiFA,KAudF0X,CAAAirB,QAvdE,CAudmB,IAvdnB,CAAOya,CAAAp9C,OAAP,CAAA,CACE,GAAI,CACFo9C,CAAAx6B,MAAA,EAAA,EADE,CAEF,MAAOtb,CAAP,CAAU,CACVkP,CAAA,CAAkBlP,CAAlB,CADU,CA1GI,CA3hBJ,CA8qBhBsF,SAAUA,QAAQ,EAAG,CAEnB,GAAIosB,CAAA,IAAAA,YAAJ,CAAA,CACA,IAAI52B,EAAS,IAAAw3C,QAEb,KAAAzL,WAAA,CAAgB,UAAhB,CACA,KAAAnV,YAAA,CAAmB,CAAA,CACnB,IAAI,IAAJ,GAAathB,CAAb,CAAA,CAEA,IAAS2lC,IAAAA,CAAT,GAAsB,KAAAvE,gBAAtB,CACEmB,CAAA,CAAuB,IAAvB,CAA6B,IAAAnB,gBAAA,CAAqBuE,CAArB,CAA7B,CAA8DA,CAA9D,CAKEj7C,EAAAu2C,YAAJ,EAA0B,IAA1B,GAAgCv2C,CAAAu2C,YAAhC;AAAqD,IAAAD,cAArD,CACIt2C,EAAAw2C,YAAJ,EAA0B,IAA1B,GAAgCx2C,CAAAw2C,YAAhC,CAAqD,IAAAiB,cAArD,CACI,KAAAA,cAAJ,GAAwB,IAAAA,cAAAnB,cAAxB,CAA2D,IAAAA,cAA3D,CACI,KAAAA,cAAJ,GAAwB,IAAAA,cAAAmB,cAAxB,CAA2D,IAAAA,cAA3D,CAGA,KAAAjtC,SAAA,CAAgB,IAAAuiC,QAAhB,CAA+B,IAAA7kC,OAA/B,CAA6C,IAAAnH,WAA7C,CAA+D,IAAAu/B,YAA/D,CAAkFngC,CAClF,KAAAqzB,IAAA,CAAW,IAAAxyB,OAAX,CAAyB,IAAA6jC,YAAzB,CAA4CqW,QAAQ,EAAG,CAAE,MAAO/6C,EAAT,CACvD,KAAAs2C,YAAA,CAAmB,EAUnB,KAAAe,QAAA,CAAe,IAAAlB,cAAf,CAAoC,IAAAmB,cAApC,CAAyD,IAAAlB,YAAzD,CACI,IAAAC,YADJ,CACuB,IAAAkB,MADvB,CACoC,IAAArB,WADpC,CACsD,IA3BtD,CALA,CAFmB,CA9qBL,CA+uBhBuE,MAAOA,QAAQ,CAAC1B,CAAD;AAAOz4B,CAAP,CAAe,CAC5B,MAAOrL,EAAA,CAAO8jC,CAAP,CAAA,CAAa,IAAb,CAAmBz4B,CAAnB,CADqB,CA/uBd,CAixBhB1f,WAAYA,QAAQ,CAACm4C,CAAD,CAAOz4B,CAAP,CAAe,CAG5BnL,CAAAirB,QAAL,EAA4Boa,CAAA/8C,OAA5B,EACEgW,CAAAwT,MAAA,CAAe,QAAQ,EAAG,CACpBuzB,CAAA/8C,OAAJ,EACE0X,CAAAy3B,QAAA,EAFsB,CAA1B,CAOF4N,EAAAl4C,KAAA,CAAgB,CAACuF,MAAO,IAAR,CAAc8zB,WAAYod,CAA1B,CAAgCz4B,OAAQA,CAAxC,CAAhB,CAXiC,CAjxBnB,CA+xBhB4xB,aAAcA,QAAQ,CAACpuC,CAAD,CAAK,CACzB+2C,CAAAv4C,KAAA,CAAqBwB,CAArB,CADyB,CA/xBX,CAg1BhBiE,OAAQA,QAAQ,CAACgxC,CAAD,CAAO,CACrB,GAAI,CAEF,MADAvB,EAAA,CAAW,QAAX,CACO,CAAA,IAAAiD,MAAA,CAAW1B,CAAX,CAFL,CAGF,MAAOh0C,CAAP,CAAU,CACVkP,CAAA,CAAkBlP,CAAlB,CADU,CAHZ,OAKU,CAmQZoQ,CAAAirB,QAAA,CAAqB,IAjQjB,IAAI,CACFjrB,CAAAy3B,QAAA,EADE,CAEF,MAAO7nC,CAAP,CAAU,CAEV,KADAkP,EAAA,CAAkBlP,CAAlB,CACMA,CAAAA,CAAN,CAFU,CAJJ,CANW,CAh1BP,CAk3BhBo7B,YAAaA,QAAQ,CAAC4Y,CAAD,CAAO,CAK1BiC,QAASA,EAAqB,EAAG,CAC/BnzC,CAAA4yC,MAAA,CAAY1B,CAAZ,CAD+B,CAJjC,IAAIlxC,EAAQ,IACZkxC,EAAA,EAAQjB,CAAAx1C,KAAA,CAAqB04C,CAArB,CACRjD,EAAA,EAH0B,CAl3BZ,CAu5BhB1kB,IAAKA,QAAQ,CAAC1sB,CAAD,CAAO+d,CAAP,CAAiB,CAC5B,IAAIu2B,EAAiB,IAAA3E,YAAA,CAAiB3vC,CAAjB,CAChBs0C,EAAL,GACE,IAAA3E,YAAA,CAAiB3vC,CAAjB,CADF,CAC2Bs0C,CAD3B,CAC4C,EAD5C,CAGAA,EAAA34C,KAAA,CAAoBoiB,CAApB,CAEA,KAAIizB,EAAU,IACd,GACOA,EAAApB,gBAAA,CAAwB5vC,CAAxB,CAGL;CAFEgxC,CAAApB,gBAAA,CAAwB5vC,CAAxB,CAEF,CAFkC,CAElC,EAAAgxC,CAAApB,gBAAA,CAAwB5vC,CAAxB,CAAA,EAJF,OAKUgxC,CALV,CAKoBA,CAAAN,QALpB,CAOA,KAAIxzC,EAAO,IACX,OAAO,SAAQ,EAAG,CAChB,IAAIq3C,EAAkBD,CAAAn5C,QAAA,CAAuB4iB,CAAvB,CACG,GAAzB,GAAIw2B,CAAJ,GACED,CAAA,CAAeC,CAAf,CACA,CADkC,IAClC,CAAAxD,CAAA,CAAuB7zC,CAAvB,CAA6B,CAA7B,CAAgC8C,CAAhC,CAFF,CAFgB,CAhBU,CAv5Bd,CAu8BhBw0C,MAAOA,QAAQ,CAACx0C,CAAD,CAAO2X,CAAP,CAAa,CAAA,IACtBxZ,EAAQ,EADc,CAEtBm2C,CAFsB,CAGtBpzC,EAAQ,IAHc,CAItBwV,EAAkB,CAAA,CAJI,CAKtBV,EAAQ,CACNhW,KAAMA,CADA,CAENy0C,YAAavzC,CAFP,CAGNwV,gBAAiBA,QAAQ,EAAG,CAACA,CAAA,CAAkB,CAAA,CAAnB,CAHtB,CAINmvB,eAAgBA,QAAQ,EAAG,CACzB7vB,CAAAG,iBAAA,CAAyB,CAAA,CADA,CAJrB,CAONA,iBAAkB,CAAA,CAPZ,CALc,CActBu+B,EAAe73C,EAAA,CAAO,CAACmZ,CAAD,CAAP,CAAgBrd,SAAhB,CAA2B,CAA3B,CAdO,CAetBZ,CAfsB,CAenBjB,CAEP,GAAG,CACDw9C,CAAA,CAAiBpzC,CAAAyuC,YAAA,CAAkB3vC,CAAlB,CAAjB,EAA4C7B,CAC5C6X,EAAAw6B,aAAA,CAAqBtvC,CAChBnJ,EAAA,CAAI,CAAT,KAAYjB,CAAZ,CAAqBw9C,CAAAx9C,OAArB,CAA4CiB,CAA5C,CAAgDjB,CAAhD,CAAwDiB,CAAA,EAAxD,CAGE,GAAKu8C,CAAA,CAAev8C,CAAf,CAAL,CAMA,GAAI,CAEFu8C,CAAA,CAAev8C,CAAf,CAAAuF,MAAA,CAAwB,IAAxB,CAA8Bo3C,CAA9B,CAFE,CAGF,MAAOt2C,CAAP,CAAU,CACVkP,CAAA,CAAkBlP,CAAlB,CADU,CATZ,IACEk2C,EAAAl5C,OAAA,CAAsBrD,CAAtB,CAAyB,CAAzB,CAEA,CADAA,CAAA,EACA,CAAAjB,CAAA,EAWJ,IAAI4f,CAAJ,CAEE,MADAV,EAAAw6B,aACOx6B;AADc,IACdA,CAAAA,CAGT9U,EAAA,CAAQA,CAAAwvC,QAzBP,CAAH,MA0BSxvC,CA1BT,CA4BA8U,EAAAw6B,aAAA,CAAqB,IAErB,OAAOx6B,EA/CmB,CAv8BZ,CA+gChBivB,WAAYA,QAAQ,CAACjlC,CAAD,CAAO2X,CAAP,CAAa,CAAA,IAE3Bq5B,EADSrL,IADkB,CAG3BsO,EAFStO,IADkB,CAI3B3vB,EAAQ,CACNhW,KAAMA,CADA,CAENy0C,YALO9O,IAGD,CAGNE,eAAgBA,QAAQ,EAAG,CACzB7vB,CAAAG,iBAAA,CAAyB,CAAA,CADA,CAHrB,CAMNA,iBAAkB,CAAA,CANZ,CASZ,IAAK,CAZQwvB,IAYRiK,gBAAA,CAAuB5vC,CAAvB,CAAL,CAAmC,MAAOgW,EAM1C,KAnB+B,IAe3B0+B,EAAe73C,EAAA,CAAO,CAACmZ,CAAD,CAAP,CAAgBrd,SAAhB,CAA2B,CAA3B,CAfY,CAgBhBZ,CAhBgB,CAgBbjB,CAGlB,CAAQk6C,CAAR,CAAkBiD,CAAlB,CAAA,CAAyB,CACvBj+B,CAAAw6B,aAAA,CAAqBQ,CACrBrd,EAAA,CAAYqd,CAAArB,YAAA,CAAoB3vC,CAApB,CAAZ,EAAyC,EACpCjI,EAAA,CAAI,CAAT,KAAYjB,CAAZ,CAAqB68B,CAAA78B,OAArB,CAAuCiB,CAAvC,CAA2CjB,CAA3C,CAAmDiB,CAAA,EAAnD,CAEE,GAAK47B,CAAA,CAAU57B,CAAV,CAAL,CAOA,GAAI,CACF47B,CAAA,CAAU57B,CAAV,CAAAuF,MAAA,CAAmB,IAAnB,CAAyBo3C,CAAzB,CADE,CAEF,MAAOt2C,CAAP,CAAU,CACVkP,CAAA,CAAkBlP,CAAlB,CADU,CATZ,IACEu1B,EAAAv4B,OAAA,CAAiBrD,CAAjB,CAAoB,CAApB,CAEA,CADAA,CAAA,EACA,CAAAjB,CAAA,EAeJ,IAAM,EAAAm9C,CAAA,CAASjD,CAAApB,gBAAA,CAAwB5vC,CAAxB,CAAT,EAA0CgxC,CAAAvB,YAA1C,EACDuB,CADC,GAzCKrL,IAyCL,EACqBqL,CAAAxB,cADrB,CAAN,CAEE,IAAA,CAAOwB,CAAP,GA3CSrL,IA2CT,EAA+B,EAAAsO,CAAA;AAAOjD,CAAAxB,cAAP,CAA/B,CAAA,CACEwB,CAAA,CAAUA,CAAAN,QA1BS,CA+BzB16B,CAAAw6B,aAAA,CAAqB,IACrB,OAAOx6B,EAnDwB,CA/gCjB,CAskClB,KAAIxH,EAAa,IAAIiiC,CAArB,CAGIoD,EAAarlC,CAAAmmC,aAAbd,CAAuC,EAH3C,CAIIK,EAAkB1lC,CAAAomC,kBAAlBV,CAAiD,EAJrD,CAKI/C,EAAkB3iC,CAAAqmC,kBAAlB1D,CAAiD,EAErD,OAAO3iC,EAlqCoD,CADjD,CA3BgB,CAuvC9BtH,QAASA,GAAqB,EAAG,CAAA,IAC3Bid,EAA6B,mCADF,CAE7BG,EAA8B,4CAkBhC,KAAAH,2BAAA,CAAkCC,QAAQ,CAACC,CAAD,CAAS,CACjD,MAAI3qB,EAAA,CAAU2qB,CAAV,CAAJ,EACEF,CACO,CADsBE,CACtB,CAAA,IAFT,EAIOF,CAL0C,CAyBnD,KAAAG,4BAAA,CAAmCC,QAAQ,CAACF,CAAD,CAAS,CAClD,MAAI3qB,EAAA,CAAU2qB,CAAV,CAAJ,EACEC,CACO,CADuBD,CACvB,CAAA,IAFT,EAIOC,CAL2C,CAQpD,KAAAzN,KAAA,CAAYC,QAAQ,EAAG,CACrB,MAAOg+B,SAAoB,CAACC,CAAD,CAAMC,CAAN,CAAe,CACxC,IAAIC,EAAQD,CAAA,CAAU1wB,CAAV,CAAwCH,CAApD,CACI+wB,CACJA,EAAA,CAAgBjZ,EAAA,CAAW8Y,CAAX,CAAAl2B,KAChB,OAAsB,EAAtB,GAAIq2B,CAAJ,EAA6BA,CAAAl5C,MAAA,CAAoBi5C,CAApB,CAA7B,CAGOF,CAHP,CACS,SADT;AACqBG,CALmB,CADrB,CArDQ,CA2FjCC,QAASA,GAAa,CAACC,CAAD,CAAU,CAC9B,GAAgB,MAAhB,GAAIA,CAAJ,CACE,MAAOA,EACF,IAAIn+C,CAAA,CAASm+C,CAAT,CAAJ,CAAuB,CAK5B,GAA8B,EAA9B,CAAIA,CAAAj6C,QAAA,CAAgB,KAAhB,CAAJ,CACE,KAAMk6C,GAAA,CAAW,QAAX,CACsDD,CADtD,CAAN,CAGFA,CAAA,CAAUE,EAAA,CAAgBF,CAAhB,CAAA32C,QAAA,CACY,QADZ,CACsB,IADtB,CAAAA,QAAA,CAEY,KAFZ,CAEmB,YAFnB,CAGV,OAAO,KAAI1C,MAAJ,CAAW,GAAX,CAAiBq5C,CAAjB,CAA2B,GAA3B,CAZqB,CAavB,GAAIr7C,EAAA,CAASq7C,CAAT,CAAJ,CAIL,MAAO,KAAIr5C,MAAJ,CAAW,GAAX,CAAiBq5C,CAAA95C,OAAjB,CAAkC,GAAlC,CAEP,MAAM+5C,GAAA,CAAW,UAAX,CAAN,CAtB4B,CA4BhCE,QAASA,GAAc,CAACC,CAAD,CAAW,CAChC,IAAIC,EAAmB,EACnB/7C,EAAA,CAAU87C,CAAV,CAAJ,EACEr+C,CAAA,CAAQq+C,CAAR,CAAkB,QAAQ,CAACJ,CAAD,CAAU,CAClCK,CAAA95C,KAAA,CAAsBw5C,EAAA,CAAcC,CAAd,CAAtB,CADkC,CAApC,CAIF,OAAOK,EAPyB,CA8ElCxmC,QAASA,GAAoB,EAAG,CAC9B,IAAAymC,aAAA,CAAoBA,EADU,KAI1BC,EAAuB,CAAC,MAAD,CAJG,CAK1BC,EAAuB,EAwB3B,KAAAD,qBAAA,CAA4BE,QAAQ,CAAC39C,CAAD,CAAQ,CACtCS,SAAA7B,OAAJ,GACE6+C,CADF,CACyBJ,EAAA,CAAer9C,CAAf,CADzB,CAGA,OAAOy9C,EAJmC,CAkC5C,KAAAC,qBAAA,CAA4BE,QAAQ,CAAC59C,CAAD,CAAQ,CACtCS,SAAA7B,OAAJ;CACE8+C,CADF,CACyBL,EAAA,CAAer9C,CAAf,CADzB,CAGA,OAAO09C,EAJmC,CAO5C,KAAA/+B,KAAA,CAAY,CAAC,WAAD,CAAc,QAAQ,CAACuD,CAAD,CAAY,CAW5C27B,QAASA,EAAQ,CAACX,CAAD,CAAUhU,CAAV,CAAqB,CACpC,MAAgB,MAAhB,GAAIgU,CAAJ,CACShb,EAAA,CAAgBgH,CAAhB,CADT,CAIS,CAAE,CAAAgU,CAAAhkC,KAAA,CAAagwB,CAAAviB,KAAb,CALyB,CA+BtCm3B,QAASA,EAAkB,CAACC,CAAD,CAAO,CAChC,IAAIC,EAAaA,QAA+B,CAACC,CAAD,CAAe,CAC7D,IAAAC,qBAAA,CAA4BC,QAAQ,EAAG,CACrC,MAAOF,EAD8B,CADsB,CAK3DF,EAAJ,GACEC,CAAAl8B,UADF,CACyB,IAAIi8B,CAD7B,CAGAC,EAAAl8B,UAAAijB,QAAA,CAA+BqZ,QAAmB,EAAG,CACnD,MAAO,KAAAF,qBAAA,EAD4C,CAGrDF,EAAAl8B,UAAAlgB,SAAA,CAAgCy8C,QAAoB,EAAG,CACrD,MAAO,KAAAH,qBAAA,EAAAt8C,SAAA,EAD8C,CAGvD,OAAOo8C,EAfyB,CAxClC,IAAIM,EAAgBA,QAAsB,CAACj4C,CAAD,CAAO,CAC/C,KAAM82C,GAAA,CAAW,QAAX,CAAN,CAD+C,CAI7Cj7B,EAAAD,IAAA,CAAc,WAAd,CAAJ,GACEq8B,CADF,CACkBp8B,CAAAjY,IAAA,CAAc,WAAd,CADlB,CAN4C,KA4DxCs0C,EAAyBT,CAAA,EA5De,CA6DxCU,EAAS,EAEbA,EAAA,CAAOhB,EAAAvkB,KAAP,CAAA,CAA4B6kB,CAAA,CAAmBS,CAAnB,CAC5BC,EAAA,CAAOhB,EAAAiB,IAAP,CAAA,CAA2BX,CAAA,CAAmBS,CAAnB,CAC3BC,EAAA,CAAOhB,EAAAkB,IAAP,CAAA;AAA2BZ,CAAA,CAAmBS,CAAnB,CAC3BC,EAAA,CAAOhB,EAAAmB,GAAP,CAAA,CAA0Bb,CAAA,CAAmBS,CAAnB,CAC1BC,EAAA,CAAOhB,EAAAtkB,aAAP,CAAA,CAAoC4kB,CAAA,CAAmBU,CAAA,CAAOhB,EAAAkB,IAAP,CAAnB,CAyGpC,OAAO,CAAEE,QAtFTA,QAAgB,CAAChkC,CAAD,CAAOqjC,CAAP,CAAqB,CACnC,IAAIY,EAAeL,CAAAl/C,eAAA,CAAsBsb,CAAtB,CAAA,CAA8B4jC,CAAA,CAAO5jC,CAAP,CAA9B,CAA6C,IAChE,IAAKikC,CAAAA,CAAL,CACE,KAAM1B,GAAA,CAAW,UAAX,CAEFviC,CAFE,CAEIqjC,CAFJ,CAAN,CAIF,GAAqB,IAArB,GAAIA,CAAJ,EAA6BA,CAA7B,GAA8C1/C,CAA9C,EAA4E,EAA5E,GAA2D0/C,CAA3D,CACE,MAAOA,EAIT,IAA4B,QAA5B,GAAI,MAAOA,EAAX,CACE,KAAMd,GAAA,CAAW,OAAX,CAEFviC,CAFE,CAAN,CAIF,MAAO,KAAIikC,CAAJ,CAAgBZ,CAAhB,CAjB4B,CAsF9B,CACEnZ,WA1BTA,QAAmB,CAAClqB,CAAD,CAAOkkC,CAAP,CAAqB,CACtC,GAAqB,IAArB,GAAIA,CAAJ,EAA6BA,CAA7B,GAA8CvgD,CAA9C,EAA4E,EAA5E,GAA2DugD,CAA3D,CACE,MAAOA,EAET,KAAI9yC,EAAewyC,CAAAl/C,eAAA,CAAsBsb,CAAtB,CAAA,CAA8B4jC,CAAA,CAAO5jC,CAAP,CAA9B,CAA6C,IAChE,IAAI5O,CAAJ,EAAmB8yC,CAAnB,WAA2C9yC,EAA3C,CACE,MAAO8yC,EAAAZ,qBAAA,EAKT,IAAItjC,CAAJ,GAAa4iC,EAAAtkB,aAAb,CAAwC,CAzIpCgQ,IAAAA,EAAYnF,EAAA,CA0ImB+a,CA1IRl9C,SAAA,EAAX,CAAZsnC,CACArpC,CADAqpC,CACGhgB,CADHggB,CACM6V,EAAU,CAAA,CAEfl/C,EAAA,CAAI,CAAT,KAAYqpB,CAAZ,CAAgBu0B,CAAA7+C,OAAhB,CAA6CiB,CAA7C,CAAiDqpB,CAAjD,CAAoDrpB,CAAA,EAApD,CACE,GAAIg+C,CAAA,CAASJ,CAAA,CAAqB59C,CAArB,CAAT,CAAkCqpC,CAAlC,CAAJ,CAAkD,CAChD6V,CAAA,CAAU,CAAA,CACV,MAFgD,CAKpD,GAAIA,CAAJ,CAEE,IAAKl/C,CAAO;AAAH,CAAG,CAAAqpB,CAAA,CAAIw0B,CAAA9+C,OAAhB,CAA6CiB,CAA7C,CAAiDqpB,CAAjD,CAAoDrpB,CAAA,EAApD,CACE,GAAIg+C,CAAA,CAASH,CAAA,CAAqB79C,CAArB,CAAT,CAAkCqpC,CAAlC,CAAJ,CAAkD,CAChD6V,CAAA,CAAU,CAAA,CACV,MAFgD,CA8HpD,GAxHKA,CAwHL,CACE,MAAOD,EAEP,MAAM3B,GAAA,CAAW,UAAX,CAEF2B,CAAAl9C,SAAA,EAFE,CAAN,CAJoC,CAQjC,GAAIgZ,CAAJ,GAAa4iC,EAAAvkB,KAAb,CACL,MAAOqlB,EAAA,CAAcQ,CAAd,CAET,MAAM3B,GAAA,CAAW,QAAX,CAAN,CAtBsC,CAyBjC,CAEEpY,QAlDTA,QAAgB,CAAC+Z,CAAD,CAAe,CAC7B,MAAIA,EAAJ,WAA4BP,EAA5B,CACSO,CAAAZ,qBAAA,EADT,CAGSY,CAJoB,CAgDxB,CA5KqC,CAAlC,CAtEkB,CAkhBhCjoC,QAASA,GAAY,EAAG,CACtB,IAAI0V,EAAU,CAAA,CAad,KAAAA,QAAA,CAAeyyB,QAAQ,CAACh/C,CAAD,CAAQ,CACzBS,SAAA7B,OAAJ,GACE2tB,CADF,CACY,CAAEvsB,CAAAA,CADd,CAGA,OAAOusB,EAJsB,CAsD/B,KAAA5N,KAAA,CAAY,CAAC,QAAD,CAAW,cAAX,CAA2B,QAAQ,CACjCvI,CADiC,CACvBU,CADuB,CACT,CAGpC,GAAIyV,CAAJ,EAAsB,CAAtB,CAAe0yB,EAAf,CACE,KAAM9B,GAAA,CAAW,UAAX,CAAN,CAMF,IAAI+B,EAAMh7C,EAAA,CAAYs5C,EAAZ,CAaV0B,EAAAC,UAAA,CAAgBC,QAAQ,EAAG,CACzB,MAAO7yB,EADkB,CAG3B2yB,EAAAN,QAAA,CAAc9nC,CAAA8nC,QACdM,EAAApa,WAAA,CAAiBhuB,CAAAguB,WACjBoa,EAAAna,QAAA,CAAcjuB,CAAAiuB,QAETxY,EAAL,GACE2yB,CAAAN,QACA;AADcM,CAAApa,WACd,CAD+Bua,QAAQ,CAACzkC,CAAD,CAAO5a,CAAP,CAAc,CAAE,MAAOA,EAAT,CACrD,CAAAk/C,CAAAna,QAAA,CAAc3jC,EAFhB,CAwBA89C,EAAAI,QAAA,CAAcC,QAAmB,CAAC3kC,CAAD,CAAOs/B,CAAP,CAAa,CAC5C,IAAIlgC,EAAS5D,CAAA,CAAO8jC,CAAP,CACb,OAAIlgC,EAAAga,QAAJ,EAAsBha,CAAA/L,SAAtB,CACS+L,CADT,CAGS5D,CAAA,CAAO8jC,CAAP,CAAa,QAAQ,CAACl6C,CAAD,CAAQ,CAClC,MAAOk/C,EAAApa,WAAA,CAAelqB,CAAf,CAAqB5a,CAArB,CAD2B,CAA7B,CALmC,CAtDV,KAoThC6F,EAAQq5C,CAAAI,QApTwB,CAqThCxa,EAAaoa,CAAApa,WArTmB,CAsThC8Z,EAAUM,CAAAN,QAEd3/C,EAAA,CAAQu+C,EAAR,CAAsB,QAAQ,CAACgC,CAAD,CAAY13C,CAAZ,CAAkB,CAC9C,IAAI23C,EAAQ58C,CAAA,CAAUiF,CAAV,CACZo3C,EAAA,CAAIhnC,EAAA,CAAU,WAAV,CAAwBunC,CAAxB,CAAJ,CAAA,CAAsC,QAAQ,CAACvF,CAAD,CAAO,CACnD,MAAOr0C,EAAA,CAAM25C,CAAN,CAAiBtF,CAAjB,CAD4C,CAGrDgF,EAAA,CAAIhnC,EAAA,CAAU,cAAV,CAA2BunC,CAA3B,CAAJ,CAAA,CAAyC,QAAQ,CAACz/C,CAAD,CAAQ,CACvD,MAAO8kC,EAAA,CAAW0a,CAAX,CAAsBx/C,CAAtB,CADgD,CAGzDk/C,EAAA,CAAIhnC,EAAA,CAAU,WAAV,CAAwBunC,CAAxB,CAAJ,CAAA,CAAsC,QAAQ,CAACz/C,CAAD,CAAQ,CACpD,MAAO4+C,EAAA,CAAQY,CAAR,CAAmBx/C,CAAnB,CAD6C,CARR,CAAhD,CAaA,OAAOk/C,EArU6B,CAD1B,CApEU,CA4ZxBjoC,QAASA,GAAgB,EAAG,CAC1B,IAAA0H,KAAA,CAAY,CAAC,SAAD,CAAY,WAAZ,CAAyB,QAAQ,CAACjH,CAAD,CAAUxC,CAAV,CAAqB,CAAA,IAC5DwqC,EAAe,EAD6C,CAE5DC,EACE/+C,EAAA,CAAI,CAAC,eAAAsY,KAAA,CAAqBrW,CAAA,CAAU+8C,CAACloC,CAAAmoC,UAADD;AAAsB,EAAtBA,WAAV,CAArB,CAAD,EAAyE,EAAzE,EAA6E,CAA7E,CAAJ,CAH0D,CAI5DE,EAAQ,QAAAx2C,KAAA,CAAcs2C,CAACloC,CAAAmoC,UAADD,EAAsB,EAAtBA,WAAd,CAJoD,CAK5DthD,EAAW4W,CAAA,CAAU,CAAV,CAAX5W,EAA2B,EALiC,CAM5DyhD,CAN4D,CAO5DC,EAAc,2BAP8C,CAQ5DC,EAAY3hD,CAAA4kC,KAAZ+c,EAA6B3hD,CAAA4kC,KAAArzB,MAR+B,CAS5DqwC,EAAc,CAAA,CAT8C,CAU5DC,EAAa,CAAA,CAGjB,IAAIF,CAAJ,CAAe,CACb,IAAS59C,IAAAA,CAAT,GAAiB49C,EAAjB,CACE,GAAIn8C,CAAJ,CAAYk8C,CAAA9mC,KAAA,CAAiB7W,CAAjB,CAAZ,CAAoC,CAClC09C,CAAA,CAAej8C,CAAA,CAAM,CAAN,CACfi8C,EAAA,CAAeA,CAAA74B,OAAA,CAAoB,CAApB,CAAuB,CAAvB,CAAA5O,YAAA,EAAf,CAAyDynC,CAAA74B,OAAA,CAAoB,CAApB,CACzD,MAHkC,CAOjC64B,CAAL,GACEA,CADF,CACkB,eADlB,EACqCE,EADrC,EACmD,QADnD,CAIAC,EAAA,CAAc,CAAG,EAAC,YAAD,EAAiBD,EAAjB,EAAgCF,CAAhC,CAA+C,YAA/C,EAA+DE,EAA/D,CACjBE,EAAA,CAAc,CAAG,EAAC,WAAD,EAAgBF,EAAhB,EAA+BF,CAA/B,CAA8C,WAA9C,EAA6DE,EAA7D,CAEbN,EAAAA,CAAJ,EAAiBO,CAAjB,EAAkCC,CAAlC,GACED,CACA,CADcnhD,CAAA,CAAST,CAAA4kC,KAAArzB,MAAAuwC,iBAAT,CACd,CAAAD,CAAA,CAAaphD,CAAA,CAAST,CAAA4kC,KAAArzB,MAAAwwC,gBAAT,CAFf,CAhBa,CAuBf,MAAO,CAULh7B,QAAS,EAAGA,CAAA3N,CAAA2N,QAAH,EAAsBi7B,CAAA5oC,CAAA2N,QAAAi7B,UAAtB,EAA+D,CAA/D,CAAqDX,CAArD,EAAsEG,CAAtE,CAVJ,CAYLS,SAAUA,QAAQ,CAACziC,CAAD,CAAQ,CAMxB,GAAc,OAAd;AAAIA,CAAJ,EAAiC,EAAjC,EAAyBmhC,EAAzB,CAAqC,MAAO,CAAA,CAE5C,IAAI19C,CAAA,CAAYm+C,CAAA,CAAa5hC,CAAb,CAAZ,CAAJ,CAAsC,CACpC,IAAI0iC,EAASliD,CAAA0a,cAAA,CAAuB,KAAvB,CACb0mC,EAAA,CAAa5hC,CAAb,CAAA,CAAsB,IAAtB,CAA6BA,CAA7B,GAAsC0iC,EAFF,CAKtC,MAAOd,EAAA,CAAa5hC,CAAb,CAbiB,CAZrB,CA2BLnP,IAAKA,EAAA,EA3BA,CA4BLoxC,aAAcA,CA5BT,CA6BLG,YAAaA,CA7BR,CA8BLC,WAAYA,CA9BP,CA+BLR,QAASA,CA/BJ,CApCyD,CAAtD,CADc,CA4F5BtoC,QAASA,GAAwB,EAAG,CAClC,IAAAsH,KAAA,CAAY,CAAC,gBAAD,CAAmB,OAAnB,CAA4B,IAA5B,CAAkC,QAAQ,CAACzH,CAAD,CAAiBtB,CAAjB,CAAwBY,CAAxB,CAA4B,CAChFiqC,QAASA,EAAe,CAACC,CAAD,CAAMC,CAAN,CAA0B,CAChDF,CAAAG,qBAAA,EAEA,KAAIviB,EAAoBzoB,CAAAwoB,SAApBC,EAAsCzoB,CAAAwoB,SAAAC,kBAEtCr/B,EAAA,CAAQq/B,CAAR,CAAJ,CACEA,CADF,CACsBA,CAAAlwB,OAAA,CAAyB,QAAQ,CAAC0yC,CAAD,CAAc,CACjE,MAAOA,EAAP,GAAuBxjB,EAD0C,CAA/C,CADtB,CAIWgB,CAJX,GAIiChB,EAJjC,GAKEgB,CALF,CAKsB,IALtB,CAaA,OAAOzoB,EAAA3L,IAAA,CAAUy2C,CAAV,CALWI,CAChB5/B,MAAOhK,CADS4pC,CAEhBziB,kBAAmBA,CAFHyiB,CAKX,CAAA,CACJ,SADI,CAAA,CACO,QAAQ,EAAG,CACrBL,CAAAG,qBAAA,EADqB,CADlB,CAAArpB,KAAA,CAIC,QAAQ,CAAC2H,CAAD,CAAW,CACvB,MAAOA,EAAA/1B,KADgB,CAJpB;AAQP43C,QAAoB,CAAC5hB,CAAD,CAAO,CACzB,GAAKwhB,CAAAA,CAAL,CACE,KAAM91B,GAAA,CAAe,QAAf,CAAyD61B,CAAzD,CAAN,CAEF,MAAOlqC,EAAA4oB,OAAA,CAAUD,CAAV,CAJkB,CARpB,CAlByC,CAkClDshB,CAAAG,qBAAA,CAAuC,CAEvC,OAAOH,EArCyE,CAAtE,CADsB,CA0CpClpC,QAASA,GAAqB,EAAG,CAC/B,IAAAoH,KAAA,CAAY,CAAC,YAAD,CAAe,UAAf,CAA2B,WAA3B,CACP,QAAQ,CAACrI,CAAD,CAAe1B,CAAf,CAA2BoB,CAA3B,CAAsC,CA6GjD,MApGkBgrC,CAcN,aAAeC,QAAQ,CAACr+C,CAAD,CAAUk6B,CAAV,CAAsBokB,CAAtB,CAAsC,CACnEx2B,CAAAA,CAAW9nB,CAAAu+C,uBAAA,CAA+B,YAA/B,CACf,KAAIC,EAAU,EACdniD,EAAA,CAAQyrB,CAAR,CAAkB,QAAQ,CAACkR,CAAD,CAAU,CAClC,IAAIylB,EAAc93C,EAAA3G,QAAA,CAAgBg5B,CAAhB,CAAAzyB,KAAA,CAA8B,UAA9B,CACdk4C,EAAJ,EACEpiD,CAAA,CAAQoiD,CAAR,CAAqB,QAAQ,CAACC,CAAD,CAAc,CACrCJ,CAAJ,CAEM53C,CADU4zC,IAAIr5C,MAAJq5C,CAAW,SAAXA,CAAuBE,EAAA,CAAgBtgB,CAAhB,CAAvBogB,CAAqD,aAArDA,CACV5zC,MAAA,CAAag4C,CAAb,CAFN,EAGIF,CAAA39C,KAAA,CAAam4B,CAAb,CAHJ,CAM0C,EAN1C,EAMM0lB,CAAAr+C,QAAA,CAAoB65B,CAApB,CANN,EAOIskB,CAAA39C,KAAA,CAAam4B,CAAb,CARqC,CAA3C,CAHgC,CAApC,CAiBA,OAAOwlB,EApBgE,CAdvDJ,CAiDN,WAAaO,QAAQ,CAAC3+C,CAAD,CAAUk6B,CAAV,CAAsBokB,CAAtB,CAAsC,CAErE,IADA,IAAIM,EAAW,CAAC,KAAD,CAAQ,UAAR,CAAoB,OAApB,CAAf;AACSp4B,EAAI,CAAb,CAAgBA,CAAhB,CAAoBo4B,CAAA5iD,OAApB,CAAqC,EAAEwqB,CAAvC,CAA0C,CAGxC,IAAI/M,EAAWzZ,CAAA4X,iBAAA,CADA,GACA,CADMgnC,CAAA,CAASp4B,CAAT,CACN,CADoB,OACpB,EAFO83B,CAAAO,CAAiB,GAAjBA,CAAuB,IAE9B,EADgD,GAChD,CADsD3kB,CACtD,CADmE,IACnE,CACf,IAAIzgB,CAAAzd,OAAJ,CACE,MAAOyd,EAL+B,CAF2B,CAjDrD2kC,CAoEN,YAAcU,QAAQ,EAAG,CACnC,MAAO1rC,EAAA0P,IAAA,EAD4B,CApEnBs7B,CAiFN,YAAcW,QAAQ,CAACj8B,CAAD,CAAM,CAClCA,CAAJ,GAAY1P,CAAA0P,IAAA,EAAZ,GACE1P,CAAA0P,IAAA,CAAcA,CAAd,CACA,CAAApP,CAAAy3B,QAAA,EAFF,CADsC,CAjFtBiT,CAgGN,WAAaY,QAAQ,CAACp7B,CAAD,CAAW,CAC1C5R,CAAA0R,gCAAA,CAAyCE,CAAzC,CAD0C,CAhG1Bw6B,CAT+B,CADvC,CADmB,CAmHjCvpC,QAASA,GAAgB,EAAG,CAC1B,IAAAkH,KAAA,CAAY,CAAC,YAAD,CAAe,UAAf,CAA2B,IAA3B,CAAiC,KAAjC,CAAwC,mBAAxC,CACP,QAAQ,CAACrI,CAAD,CAAe1B,CAAf,CAA2B4B,CAA3B,CAAiCE,CAAjC,CAAwCtB,CAAxC,CAA2D,CA6BtE+sB,QAASA,EAAO,CAACl9B,CAAD,CAAKqjB,CAAL,CAAY8d,CAAZ,CAAyB,CAAA,IACnCI,EAAahlC,CAAA,CAAU4kC,CAAV,CAAbI,EAAuC,CAACJ,CADL,CAEnC5E,EAAWpZ,CAACoe,CAAA,CAAY9vB,CAAZ,CAAkBF,CAAnB4R,OAAA,EAFwB,CAGnCiY,EAAUmB,CAAAnB,QAGd9X,EAAA,CAAY3T,CAAAwT,MAAA,CAAe,QAAQ,EAAG,CACpC,GAAI,CACFoZ,CAAAC,QAAA,CAAiBx8B,CAAA,EAAjB,CADE,CAEF,MAAOiB,CAAP,CAAU,CACVs7B,CAAApC,OAAA,CAAgBl5B,CAAhB,CACA,CAAAkP,CAAA,CAAkBlP,CAAlB,CAFU,CAFZ,OAMQ,CACN,OAAO27C,CAAA,CAAUxhB,CAAAyhB,YAAV,CADD,CAIHtb,CAAL;AAAgBlwB,CAAApN,OAAA,EAXoB,CAA1B,CAYTof,CAZS,CAcZ+X,EAAAyhB,YAAA,CAAsBv5B,CACtBs5B,EAAA,CAAUt5B,CAAV,CAAA,CAAuBiZ,CAEvB,OAAOnB,EAvBgC,CA5BzC,IAAIwhB,EAAY,EAmEhB1f,EAAA3Z,OAAA,CAAiBu5B,QAAQ,CAAC1hB,CAAD,CAAU,CACjC,MAAIA,EAAJ,EAAeA,CAAAyhB,YAAf,GAAsCD,EAAtC,EACEA,CAAA,CAAUxhB,CAAAyhB,YAAV,CAAA1iB,OAAA,CAAsC,UAAtC,CAEO,CADP,OAAOyiB,CAAA,CAAUxhB,CAAAyhB,YAAV,CACA,CAAAltC,CAAAwT,MAAAI,OAAA,CAAsB6X,CAAAyhB,YAAtB,CAHT,EAKO,CAAA,CAN0B,CASnC,OAAO3f,EA7E+D,CAD5D,CADc,CAkJ5B4B,QAASA,GAAU,CAACre,CAAD,CAAM,CAGnBu5B,EAAJ,GAGE+C,CAAAhmC,aAAA,CAA4B,MAA5B,CAAoC2K,CAApC,CACA,CAAAA,CAAA,CAAOq7B,CAAAr7B,KAJT,CAOAq7B,EAAAhmC,aAAA,CAA4B,MAA5B,CAAoC2K,CAApC,CAGA,OAAO,CACLA,KAAMq7B,CAAAr7B,KADD,CAELqd,SAAUge,CAAAhe,SAAA,CAA0Bge,CAAAhe,SAAAz9B,QAAA,CAAgC,IAAhC,CAAsC,EAAtC,CAA1B,CAAsE,EAF3E,CAGLqW,KAAMolC,CAAAplC,KAHD,CAILmtB,OAAQiY,CAAAjY,OAAA,CAAwBiY,CAAAjY,OAAAxjC,QAAA,CAA8B,KAA9B,CAAqC,EAArC,CAAxB,CAAmE,EAJtE,CAKLsd,KAAMm+B,CAAAn+B,KAAA,CAAsBm+B,CAAAn+B,KAAAtd,QAAA,CAA4B,IAA5B,CAAkC,EAAlC,CAAtB,CAA8D,EAL/D,CAML8iC,SAAU2Y,CAAA3Y,SANL,CAOLE,KAAMyY,CAAAzY,KAPD,CAQLM,SAAiD,GAAvC;AAACmY,CAAAnY,SAAAzlC,OAAA,CAA+B,CAA/B,CAAD,CACN49C,CAAAnY,SADM,CAEN,GAFM,CAEAmY,CAAAnY,SAVL,CAbgB,CAkCzB3H,QAASA,GAAe,CAAC+f,CAAD,CAAa,CAC/BjoC,CAAAA,CAAUjb,CAAA,CAASkjD,CAAT,CAAD,CAAyBle,EAAA,CAAWke,CAAX,CAAzB,CAAkDA,CAC/D,OAAQjoC,EAAAgqB,SAAR,GAA4Bke,EAAAle,SAA5B,EACQhqB,CAAA4C,KADR,GACwBslC,EAAAtlC,KAHW,CA+CrCjF,QAASA,GAAe,EAAG,CACzB,IAAAgH,KAAA,CAAYrd,EAAA,CAAQjD,CAAR,CADa,CAiG3BkX,QAASA,GAAe,CAAC7M,CAAD,CAAW,CAWjC+zB,QAASA,EAAQ,CAAC30B,CAAD,CAAOiF,CAAP,CAAgB,CAC/B,GAAItL,CAAA,CAASqG,CAAT,CAAJ,CAAoB,CAClB,IAAIq6C,EAAU,EACdljD,EAAA,CAAQ6I,CAAR,CAAc,QAAQ,CAACqG,CAAD,CAAS/O,CAAT,CAAc,CAClC+iD,CAAA,CAAQ/iD,CAAR,CAAA,CAAeq9B,CAAA,CAASr9B,CAAT,CAAc+O,CAAd,CADmB,CAApC,CAGA,OAAOg0C,EALW,CAOlB,MAAOz5C,EAAAqE,QAAA,CAAiBjF,CAAjB,CAlBEs6C,QAkBF,CAAgCr1C,CAAhC,CARsB,CAWjC,IAAA0vB,SAAA,CAAgBA,CAEhB,KAAA9d,KAAA,CAAY,CAAC,WAAD,CAAc,QAAQ,CAACuD,CAAD,CAAY,CAC5C,MAAO,SAAQ,CAACpa,CAAD,CAAO,CACpB,MAAOoa,EAAAjY,IAAA,CAAcnC,CAAd,CAzBEs6C,QAyBF,CADa,CADsB,CAAlC,CAoBZ3lB,EAAA,CAAS,UAAT,CAAqB4lB,EAArB,CACA5lB,EAAA,CAAS,MAAT,CAAiB6lB,EAAjB,CACA7lB,EAAA,CAAS,QAAT,CAAmB8lB,EAAnB,CACA9lB,EAAA,CAAS,MAAT,CAAiB+lB,EAAjB,CACA/lB,EAAA,CAAS,SAAT,CAAoBgmB,EAApB,CACAhmB,EAAA,CAAS,WAAT,CAAsBimB,EAAtB,CACAjmB,EAAA,CAAS,QAAT,CAAmBkmB,EAAnB,CACAlmB,EAAA,CAAS,SAAT,CAAoBmmB,EAApB,CACAnmB,EAAA,CAAS,WAAT;AAAsBomB,EAAtB,CApDiC,CAiLnCN,QAASA,GAAY,EAAG,CACtB,MAAO,SAAQ,CAACx/C,CAAD,CAAQ+5B,CAAR,CAAoBgmB,CAApB,CAAgC,CAC7C,GAAK,CAAA9jD,CAAA,CAAQ+D,CAAR,CAAL,CAAqB,MAAOA,EAG5B,KAAIggD,CAEJ,QAAQ,MAAOjmB,EAAf,EACE,KAAK,UAAL,CAEE,KACF,MAAK,SAAL,CACA,KAAK,QAAL,CACA,KAAK,QAAL,CACEimB,CAAA,CAAsB,CAAA,CAExB,MAAK,QAAL,CAEEC,CAAA,CAAcC,EAAA,CAAkBnmB,CAAlB,CAA8BgmB,CAA9B,CAA0CC,CAA1C,CACd,MACF,SACE,MAAOhgD,EAdX,CAiBA,MAAOA,EAAAoL,OAAA,CAAa60C,CAAb,CAvBsC,CADzB,CA6BxBC,QAASA,GAAiB,CAACnmB,CAAD,CAAagmB,CAAb,CAAyBC,CAAzB,CAA8C,CACtE,IAAIG,EAAwBzhD,CAAA,CAASq7B,CAAT,CAAxBomB,EAAiD,GAAjDA,EAAwDpmB,EAGzC,EAAA,CAAnB,GAAIgmB,CAAJ,CACEA,CADF,CACez+C,EADf,CAEYhF,CAAA,CAAWyjD,CAAX,CAFZ,GAGEA,CAHF,CAGeA,QAAQ,CAACK,CAAD,CAASC,CAAT,CAAmB,CACtC,GAAI3hD,CAAA,CAAS0hD,CAAT,CAAJ,EAAwB1hD,CAAA,CAAS2hD,CAAT,CAAxB,CAEE,MAAO,CAAA,CAGTD,EAAA,CAAStgD,CAAA,CAAU,EAAV,CAAesgD,CAAf,CACTC,EAAA,CAAWvgD,CAAA,CAAU,EAAV,CAAeugD,CAAf,CACX,OAAqC,EAArC,GAAOD,CAAAlgD,QAAA,CAAemgD,CAAf,CAR+B,CAH1C,CAsBA,OAPcJ,SAAQ,CAACK,CAAD,CAAO,CAC3B,MAAIH,EAAJ,EAA8B,CAAAzhD,CAAA,CAAS4hD,CAAT,CAA9B,CACSC,EAAA,CAAYD,CAAZ,CAAkBvmB,CAAAz7B,EAAlB,CAAgCyhD,CAAhC,CAA4C,CAAA,CAA5C,CADT,CAGOQ,EAAA,CAAYD,CAAZ,CAAkBvmB,CAAlB,CAA8BgmB,CAA9B,CAA0CC,CAA1C,CAJoB,CAnByC,CA6BxEO,QAASA,GAAW,CAACH,CAAD,CAASC,CAAT,CAAmBN,CAAnB,CAA+BC,CAA/B,CAAoDQ,CAApD,CAA0E,CAC5F,IAAIC,EAAyB,IAAZ,GAACL,CAAD,CAAoB,MAAOA,EAA3B,CAAoC,MAArD,CACIM,EAA6B,IAAd,GAACL,CAAD,CAAsB,MAAOA,EAA7B;AAAwC,MAE3D,IAAsB,QAAtB,GAAKK,CAAL,EAA2D,GAA3D,GAAoCL,CAAAh/C,OAAA,CAAgB,CAAhB,CAApC,CACE,MAAO,CAACk/C,EAAA,CAAYH,CAAZ,CAAoBC,CAAAj7B,UAAA,CAAmB,CAAnB,CAApB,CAA2C26B,CAA3C,CAAuDC,CAAvD,CACH,IAAI/jD,CAAA,CAAQmkD,CAAR,CAAJ,CAGL,MAAOA,EAAAlgC,KAAA,CAAY,QAAQ,CAACogC,CAAD,CAAO,CAChC,MAAOC,GAAA,CAAYD,CAAZ,CAAkBD,CAAlB,CAA4BN,CAA5B,CAAwCC,CAAxC,CADyB,CAA3B,CAKT,QAAQS,CAAR,EACE,KAAK,QAAL,CACE,IAAIpkD,CACJ,IAAI2jD,CAAJ,CAAyB,CACvB,IAAK3jD,CAAL,GAAY+jD,EAAZ,CACE,GAAuB,GAAvB,GAAK/jD,CAAAgF,OAAA,CAAW,CAAX,CAAL,EAA+Bk/C,EAAA,CAAYH,CAAA,CAAO/jD,CAAP,CAAZ,CAAyBgkD,CAAzB,CAAmCN,CAAnC,CAA+C,CAAA,CAA/C,CAA/B,CACE,MAAO,CAAA,CAGX,OAAOS,EAAA,CAAuB,CAAA,CAAvB,CAA+BD,EAAA,CAAYH,CAAZ,CAAoBC,CAApB,CAA8BN,CAA9B,CAA0C,CAAA,CAA1C,CANf,CAOlB,GAAqB,QAArB,GAAIW,CAAJ,CAA+B,CACpC,IAAKrkD,CAAL,GAAYgkD,EAAZ,CAEE,GADIM,CACA,CADcN,CAAA,CAAShkD,CAAT,CACd,CAAA,CAAAC,CAAA,CAAWqkD,CAAX,CAAA,EAA2B,CAAAniD,CAAA,CAAYmiD,CAAZ,CAA3B,GAIAC,CAEC,CAF0B,GAE1B,GAFkBvkD,CAElB,CAAA,CAAAkkD,EAAA,CADWK,CAAAC,CAAmBT,CAAnBS,CAA4BT,CAAA,CAAO/jD,CAAP,CACvC,CAAuBskD,CAAvB,CAAoCZ,CAApC,CAAgDa,CAAhD,CAAkEA,CAAlE,CAND,CAAJ,CAOE,MAAO,CAAA,CAGX,OAAO,CAAA,CAb6B,CAepC,MAAOb,EAAA,CAAWK,CAAX,CAAmBC,CAAnB,CAGX,MAAK,UAAL,CACE,MAAO,CAAA,CACT,SACE,MAAON,EAAA,CAAWK,CAAX,CAAmBC,CAAnB,CA/BX,CAd4F,CAsG9Ff,QAASA,GAAc,CAACwB,CAAD,CAAU,CAC/B,IAAIC,EAAUD,CAAA/c,eACd,OAAO,SAAQ,CAACid,CAAD,CAASC,CAAT,CAAyBC,CAAzB,CAAuC,CAChD1iD,CAAA,CAAYyiD,CAAZ,CAAJ,GACEA,CADF,CACmBF,CAAAnc,aADnB,CAIIpmC,EAAA,CAAY0iD,CAAZ,CAAJ;CACEA,CADF,CACiBH,CAAA7c,SAAA,CAAiB,CAAjB,CAAAG,QADjB,CAKA,OAAkB,KAAX,EAAC2c,CAAD,CACDA,CADC,CAEDG,EAAA,CAAaH,CAAb,CAAqBD,CAAA7c,SAAA,CAAiB,CAAjB,CAArB,CAA0C6c,CAAA9c,UAA1C,CAA6D8c,CAAA/c,YAA7D,CAAkFkd,CAAlF,CAAA19C,QAAA,CACU,SADV,CACqBy9C,CADrB,CAZ8C,CAFvB,CAuEjCrB,QAASA,GAAY,CAACkB,CAAD,CAAU,CAC7B,IAAIC,EAAUD,CAAA/c,eACd,OAAO,SAAQ,CAACqd,CAAD,CAASF,CAAT,CAAuB,CAGpC,MAAkB,KAAX,EAACE,CAAD,CACDA,CADC,CAEDD,EAAA,CAAaC,CAAb,CAAqBL,CAAA7c,SAAA,CAAiB,CAAjB,CAArB,CAA0C6c,CAAA9c,UAA1C,CAA6D8c,CAAA/c,YAA7D,CACakd,CADb,CAL8B,CAFT,CAa/BC,QAASA,GAAY,CAACC,CAAD,CAAS9wC,CAAT,CAAkB+wC,CAAlB,CAA4BC,CAA5B,CAAwCJ,CAAxC,CAAsD,CACzE,GAAK,CAAAK,QAAA,CAASH,CAAT,CAAL,EAAyB1iD,CAAA,CAAS0iD,CAAT,CAAzB,CAA2C,MAAO,EAElD,KAAII,EAAsB,CAAtBA,CAAaJ,CACjBA,EAAA,CAAS7tB,IAAAkuB,IAAA,CAASL,CAAT,CAJgE,KAKrEM,EAASN,CAATM,CAAkB,EALmD,CAMrEC,EAAe,EANsD,CAOrE59C,EAAQ,EAP6D,CASrE69C,EAAc,CAAA,CAClB,IAA6B,EAA7B,GAAIF,CAAAxhD,QAAA,CAAe,GAAf,CAAJ,CAAgC,CAC9B,IAAIa,EAAQ2gD,CAAA3gD,MAAA,CAAa,qBAAb,CACRA,EAAJ,EAAyB,GAAzB,EAAaA,CAAA,CAAM,CAAN,CAAb,EAAgCA,CAAA,CAAM,CAAN,CAAhC,CAA2CmgD,CAA3C,CAA0D,CAA1D,CACEE,CADF,CACW,CADX,EAGEO,CACA,CADeD,CACf,CAAAE,CAAA,CAAc,CAAA,CAJhB,CAF8B,CAUhC,GAAKA,CAAL,CA6CqB,CAAnB,CAAIV,CAAJ,EAAiC,CAAjC,CAAwBE,CAAxB,GACEO,CACA,CADeP,CAAAS,QAAA,CAAeX,CAAf,CACf,CAAAE,CAAA,CAASU,UAAA,CAAWH,CAAX,CAFX,CA7CF,KAAkB,CACZI,CAAAA,CAAclmD,CAAC6lD,CAAA/hD,MAAA,CAAaqkC,EAAb,CAAA,CAA0B,CAA1B,CAADnoC;AAAiC,EAAjCA,QAGd2C,EAAA,CAAY0iD,CAAZ,CAAJ,GACEA,CADF,CACiB3tB,IAAAyuB,IAAA,CAASzuB,IAAAC,IAAA,CAASljB,CAAA8zB,QAAT,CAA0B2d,CAA1B,CAAT,CAAiDzxC,CAAA+zB,QAAjD,CADjB,CAOA+c,EAAA,CAAS,EAAE7tB,IAAA0uB,MAAA,CAAW,EAAEb,CAAAviD,SAAA,EAAF,CAAsB,GAAtB,CAA4BqiD,CAA5B,CAAX,CAAAriD,SAAA,EAAF,CAAqE,GAArE,CAA2E,CAACqiD,CAA5E,CAELgB,KAAAA,EAAWviD,CAAC,EAADA,CAAMyhD,CAANzhD,OAAA,CAAoBqkC,EAApB,CAAXke,CACA9a,EAAQ8a,CAAA,CAAS,CAAT,CADRA,CAEJA,EAAWA,CAAA,CAAS,CAAT,CAAXA,EAA0B,EAFtBA,CAIG36C,EAAM,CAJT26C,CAKAC,EAAS7xC,CAAAq0B,OALTud,CAMAE,EAAQ9xC,CAAAo0B,MAEZ,IAAI0C,CAAAvrC,OAAJ,EAAqBsmD,CAArB,CAA8BC,CAA9B,CAEE,IADA76C,CACK,CADC6/B,CAAAvrC,OACD,CADgBsmD,CAChB,CAAArlD,CAAA,CAAI,CAAT,CAAYA,CAAZ,CAAgByK,CAAhB,CAAqBzK,CAAA,EAArB,CAC4B,CAG1B,IAHKyK,CAGL,CAHWzK,CAGX,EAHgBslD,CAGhB,EAHqC,CAGrC,GAH+BtlD,CAG/B,GAFE6kD,CAEF,EAFkBN,CAElB,EAAAM,CAAA,EAAgBva,CAAA/lC,OAAA,CAAavE,CAAb,CAIpB,KAAKA,CAAL,CAASyK,CAAT,CAAczK,CAAd,CAAkBsqC,CAAAvrC,OAAlB,CAAgCiB,CAAA,EAAhC,CACsC,CAGpC,IAHKsqC,CAAAvrC,OAGL,CAHoBiB,CAGpB,EAHyBqlD,CAGzB,EAH+C,CAG/C,GAHyCrlD,CAGzC,GAFE6kD,CAEF,EAFkBN,CAElB,EAAAM,CAAA,EAAgBva,CAAA/lC,OAAA,CAAavE,CAAb,CAIlB,KAAA,CAAOolD,CAAArmD,OAAP,CAAyBqlD,CAAzB,CAAA,CACEgB,CAAA,EAAY,GAGVhB,EAAJ,EAAqC,GAArC,GAAoBA,CAApB,GAA0CS,CAA1C,EAA0DL,CAA1D,CAAuEY,CAAA/9B,OAAA,CAAgB,CAAhB,CAAmB+8B,CAAnB,CAAvE,CA3CgB,CAmDH,CAAf,GAAIE,CAAJ,GACEI,CADF,CACe,CAAA,CADf,CAIAz9C,EAAArD,KAAA,CAAW8gD,CAAA,CAAalxC,CAAAk0B,OAAb,CAA8Bl0B,CAAAg0B,OAAzC,CACWqd,CADX,CAEWH,CAAA,CAAalxC,CAAAm0B,OAAb,CAA8Bn0B,CAAAi0B,OAFzC,CAGA,OAAOxgC,EAAAG,KAAA,CAAW,EAAX,CA9EkE,CAiF3Em+C,QAASA,GAAS,CAACxc,CAAD,CAAMyc,CAAN;AAAcvrC,CAAd,CAAoB,CACpC,IAAIwrC,EAAM,EACA,EAAV,CAAI1c,CAAJ,GACE0c,CACA,CADO,GACP,CAAA1c,CAAA,CAAM,CAACA,CAFT,CAKA,KADAA,CACA,CADM,EACN,CADWA,CACX,CAAOA,CAAAhqC,OAAP,CAAoBymD,CAApB,CAAA,CAA4Bzc,CAAA,CAAM,GAAN,CAAYA,CACpC9uB,EAAJ,GACE8uB,CADF,CACQA,CAAA1hB,OAAA,CAAW0hB,CAAAhqC,OAAX,CAAwBymD,CAAxB,CADR,CAEA,OAAOC,EAAP,CAAa1c,CAVuB,CActC2c,QAASA,EAAU,CAACz9C,CAAD,CAAO0hB,CAAP,CAAanR,CAAb,CAAqByB,CAArB,CAA2B,CAC5CzB,CAAA,CAASA,CAAT,EAAmB,CACnB,OAAO,SAAQ,CAACmtC,CAAD,CAAO,CAChBxlD,CAAAA,CAAQwlD,CAAA,CAAK,KAAL,CAAa19C,CAAb,CAAA,EACZ,IAAa,CAAb,CAAIuQ,CAAJ,EAAkBrY,CAAlB,CAA0B,CAACqY,CAA3B,CACErY,CAAA,EAASqY,CACG,EAAd,GAAIrY,CAAJ,EAA8B,GAA9B,EAAmBqY,CAAnB,GAAkCrY,CAAlC,CAA0C,EAA1C,CACA,OAAOolD,GAAA,CAAUplD,CAAV,CAAiBwpB,CAAjB,CAAuB1P,CAAvB,CALa,CAFsB,CAW9C2rC,QAASA,GAAa,CAAC39C,CAAD,CAAO49C,CAAP,CAAkB,CACtC,MAAO,SAAQ,CAACF,CAAD,CAAO1B,CAAP,CAAgB,CAC7B,IAAI9jD,EAAQwlD,CAAA,CAAK,KAAL,CAAa19C,CAAb,CAAA,EAAZ,CACImC,EAAMwE,EAAA,CAAUi3C,CAAA,CAAa,OAAb,CAAuB59C,CAAvB,CAA+BA,CAAzC,CAEV,OAAOg8C,EAAA,CAAQ75C,CAAR,CAAA,CAAajK,CAAb,CAJsB,CADO,CAmBxC2lD,QAASA,GAAsB,CAACC,CAAD,CAAO,CAElC,IAAIC,EAAmBC,CAAC,IAAIniD,IAAJ,CAASiiD,CAAT,CAAe,CAAf,CAAkB,CAAlB,CAADE,QAAA,EAGvB,OAAO,KAAIniD,IAAJ,CAASiiD,CAAT,CAAe,CAAf,EAAwC,CAArB,EAACC,CAAD,CAA0B,CAA1B,CAA8B,EAAjD,EAAuDA,CAAvD,CAL2B,CActCE,QAASA,GAAU,CAACv8B,CAAD,CAAO,CACvB,MAAO,SAAQ,CAACg8B,CAAD,CAAO,CAAA,IACfQ,EAAaL,EAAA,CAAuBH,CAAAS,YAAA,EAAvB,CAGbjuB,EAAAA,CAAO,CAVNkuB,IAAIviD,IAAJuiD,CAQ8BV,CARrBS,YAAA,EAATC,CAQ8BV,CARGW,SAAA,EAAjCD,CAQ8BV,CANnCY,QAAA,EAFKF;CAEiB,CAFjBA,CAQ8BV,CANTM,OAAA,EAFrBI,EAUDluB,CAAoB,CAACguB,CACtBtiD,EAAAA,CAAS,CAATA,CAAa4yB,IAAA0uB,MAAA,CAAWhtB,CAAX,CAAkB,MAAlB,CAEhB,OAAOotB,GAAA,CAAU1hD,CAAV,CAAkB8lB,CAAlB,CAPY,CADC,CAgB1B68B,QAASA,GAAS,CAACb,CAAD,CAAO1B,CAAP,CAAgB,CAChC,MAA6B,EAAtB,EAAA0B,CAAAS,YAAA,EAAA,CAA0BnC,CAAApb,KAAA,CAAa,CAAb,CAA1B,CAA4Cob,CAAApb,KAAA,CAAa,CAAb,CADnB,CAwIlC4Z,QAASA,GAAU,CAACuB,CAAD,CAAU,CAK3ByC,QAASA,EAAgB,CAACC,CAAD,CAAS,CAChC,IAAIziD,CACJ,IAAIA,CAAJ,CAAYyiD,CAAAziD,MAAA,CAAa0iD,CAAb,CAAZ,CAAyC,CACnChB,CAAAA,CAAO,IAAI7hD,IAAJ,CAAS,CAAT,CAD4B,KAEnC8iD,EAAS,CAF0B,CAGnCC,EAAS,CAH0B,CAInCC,EAAa7iD,CAAA,CAAM,CAAN,CAAA,CAAW0hD,CAAAoB,eAAX,CAAiCpB,CAAAqB,YAJX,CAKnCC,EAAahjD,CAAA,CAAM,CAAN,CAAA,CAAW0hD,CAAAuB,YAAX,CAA8BvB,CAAAwB,SAE3CljD,EAAA,CAAM,CAAN,CAAJ,GACE2iD,CACA,CADS7lD,EAAA,CAAIkD,CAAA,CAAM,CAAN,CAAJ,CAAeA,CAAA,CAAM,EAAN,CAAf,CACT,CAAA4iD,CAAA,CAAQ9lD,EAAA,CAAIkD,CAAA,CAAM,CAAN,CAAJ,CAAeA,CAAA,CAAM,EAAN,CAAf,CAFV,CAIA6iD,EAAApnD,KAAA,CAAgBimD,CAAhB,CAAsB5kD,EAAA,CAAIkD,CAAA,CAAM,CAAN,CAAJ,CAAtB,CAAqClD,EAAA,CAAIkD,CAAA,CAAM,CAAN,CAAJ,CAArC,CAAqD,CAArD,CAAwDlD,EAAA,CAAIkD,CAAA,CAAM,CAAN,CAAJ,CAAxD,CACI1D,EAAAA,CAAIQ,EAAA,CAAIkD,CAAA,CAAM,CAAN,CAAJ,EAAgB,CAAhB,CAAJ1D,CAAyBqmD,CACzBQ,EAAAA,CAAIrmD,EAAA,CAAIkD,CAAA,CAAM,CAAN,CAAJ,EAAgB,CAAhB,CAAJmjD,CAAyBP,CACzB5V,EAAAA,CAAIlwC,EAAA,CAAIkD,CAAA,CAAM,CAAN,CAAJ,EAAgB,CAAhB,CACJojD,EAAAA,CAAK5wB,IAAA0uB,MAAA,CAAgD,GAAhD,CAAWH,UAAA,CAAW,IAAX,EAAmB/gD,CAAA,CAAM,CAAN,CAAnB,EAA+B,CAA/B,EAAX,CACTgjD,EAAAvnD,KAAA,CAAgBimD,CAAhB,CAAsBplD,CAAtB,CAAyB6mD,CAAzB,CAA4BnW,CAA5B,CAA+BoW,CAA/B,CAhBuC,CAmBzC,MAAOX,EArByB,CAFlC,IAAIC,EAAgB,sGA2BpB;MAAO,SAAQ,CAAChB,CAAD,CAAO2B,CAAP,CAAeC,CAAf,CAAyB,CAAA,IAClCjvB,EAAO,EAD2B,CAElCrxB,EAAQ,EAF0B,CAGlC7B,CAHkC,CAG9BnB,CAERqjD,EAAA,CAASA,CAAT,EAAmB,YACnBA,EAAA,CAAStD,CAAAjc,iBAAA,CAAyBuf,CAAzB,CAAT,EAA6CA,CACzCpoD,EAAA,CAASymD,CAAT,CAAJ,GACEA,CADF,CACS6B,EAAA/9C,KAAA,CAAmBk8C,CAAnB,CAAA,CAA2B5kD,EAAA,CAAI4kD,CAAJ,CAA3B,CAAuCc,CAAA,CAAiBd,CAAjB,CADhD,CAII9jD,EAAA,CAAS8jD,CAAT,CAAJ,GACEA,CADF,CACS,IAAI7hD,IAAJ,CAAS6hD,CAAT,CADT,CAIA,IAAK,CAAA7jD,EAAA,CAAO6jD,CAAP,CAAL,CACE,MAAOA,EAGT,KAAA,CAAO2B,CAAP,CAAA,CAEE,CADArjD,CACA,CADQwjD,EAAApuC,KAAA,CAAwBiuC,CAAxB,CACR,GACErgD,CACA,CADQnC,EAAA,CAAOmC,CAAP,CAAchD,CAAd,CAAqB,CAArB,CACR,CAAAqjD,CAAA,CAASrgD,CAAA4d,IAAA,EAFX,GAIE5d,CAAArD,KAAA,CAAW0jD,CAAX,CACA,CAAAA,CAAA,CAAS,IALX,CASEC,EAAJ,EAA6B,KAA7B,GAAgBA,CAAhB,GACE5B,CACA,CADO,IAAI7hD,IAAJ,CAAS6hD,CAAA5hD,QAAA,EAAT,CACP,CAAA4hD,CAAA+B,WAAA,CAAgB/B,CAAAgC,WAAA,EAAhB,CAAoChC,CAAAiC,kBAAA,EAApC,CAFF,CAIAxoD,EAAA,CAAQ6H,CAAR,CAAe,QAAQ,CAAC9G,CAAD,CAAQ,CAC7BiF,CAAA,CAAKyiD,EAAA,CAAa1nD,CAAb,CACLm4B,EAAA,EAAQlzB,CAAA,CAAKA,CAAA,CAAGugD,CAAH,CAAS3B,CAAAjc,iBAAT,CAAL,CACK5nC,CAAAuG,QAAA,CAAc,UAAd,CAA0B,EAA1B,CAAAA,QAAA,CAAsC,KAAtC,CAA6C,GAA7C,CAHgB,CAA/B,CAMA,OAAO4xB,EAxC+B,CA9Bb,CA0G7BqqB,QAASA,GAAU,EAAG,CACpB,MAAO,SAAQ,CAACmF,CAAD,CAASC,CAAT,CAAkB,CAC3BrmD,CAAA,CAAYqmD,CAAZ,CAAJ,GACIA,CADJ,CACc,CADd,CAGA,OAAOriD,GAAA,CAAOoiD,CAAP,CAAeC,CAAf,CAJwB,CADb,CAqHtBnF,QAASA,GAAa,EAAG,CACvB,MAAO,SAAQ,CAACrzC,CAAD;AAAQy4C,CAAR,CAAe,CACxBnmD,CAAA,CAAS0N,CAAT,CAAJ,GAAqBA,CAArB,CAA6BA,CAAAxN,SAAA,EAA7B,CACA,OAAK5C,EAAA,CAAQoQ,CAAR,CAAL,EAAwBrQ,CAAA,CAASqQ,CAAT,CAAxB,CASA,CANEy4C,CAMF,CAPgCC,QAAhC,GAAIxxB,IAAAkuB,IAAA,CAAS56B,MAAA,CAAOi+B,CAAP,CAAT,CAAJ,CACUj+B,MAAA,CAAOi+B,CAAP,CADV,CAGUjnD,EAAA,CAAIinD,CAAJ,CAIV,EACiB,CAAR,CAAAA,CAAA,CAAYz4C,CAAAtK,MAAA,CAAY,CAAZ,CAAe+iD,CAAf,CAAZ,CAAoCz4C,CAAAtK,MAAA,CAAY+iD,CAAZ,CAD7C,CAGS9oD,CAAA,CAASqQ,CAAT,CAAA,CAAkB,EAAlB,CAAuB,EAZhC,CAAgDA,CAFpB,CADP,CA6KzBwzC,QAASA,GAAa,CAACxsC,CAAD,CAAS,CAC7B,MAAO,SAAQ,CAACrT,CAAD,CAAQglD,CAAR,CAAuBC,CAAvB,CAAqC,CAoClDC,QAASA,EAAiB,CAACC,CAAD,CAAOC,CAAP,CAAmB,CAC3C,MAAOA,EAAA,CACD,QAAQ,CAACj5C,CAAD,CAAI+kB,CAAJ,CAAO,CAAC,MAAOi0B,EAAA,CAAKj0B,CAAL,CAAO/kB,CAAP,CAAR,CADd,CAEDg5C,CAHqC,CAM7C1oD,QAASA,EAAW,CAACQ,CAAD,CAAQ,CAC1B,OAAQ,MAAOA,EAAf,EACE,KAAK,QAAL,CACA,KAAK,SAAL,CACA,KAAK,QAAL,CACE,MAAO,CAAA,CACT,SACE,MAAO,CAAA,CANX,CAD0B,CAW5BooD,QAASA,EAAc,CAACpoD,CAAD,CAAQ,CAC7B,MAAc,KAAd,GAAIA,CAAJ,CAA2B,MAA3B,CAC6B,UAI7B,GAJI,MAAOA,EAAA+kC,QAIX,GAHE/kC,CACI,CADIA,CAAA+kC,QAAA,EACJ,CAAAvlC,CAAA,CAAYQ,CAAZ,CAEN,GAA8B,UAA9B,GAAI,MAAOA,EAAA4B,SAAX,GACE5B,CACI,CADIA,CAAA4B,SAAA,EACJ,CAAApC,CAAA,CAAYQ,CAAZ,CAFN,EAEiCA,CAFjC,CAIO,EAVsB,CAa/B4zB,QAASA,EAAO,CAACy0B,CAAD,CAAKC,CAAL,CAAS,CACvB,IAAI9jD;AAAK,MAAO6jD,EAAhB,CACI5jD,EAAK,MAAO6jD,EACZ9jD,EAAJ,GAAWC,CAAX,EAAwB,QAAxB,GAAiBD,CAAjB,GACE6jD,CACA,CADKD,CAAA,CAAeC,CAAf,CACL,CAAAC,CAAA,CAAKF,CAAA,CAAeE,CAAf,CAFP,CAIA,OAAI9jD,EAAJ,GAAWC,CAAX,EACa,QAIX,GAJID,CAIJ,GAHG6jD,CACA,CADKA,CAAA99C,YAAA,EACL,CAAA+9C,CAAA,CAAKA,CAAA/9C,YAAA,EAER,EAAI89C,CAAJ,GAAWC,CAAX,CAAsB,CAAtB,CACOD,CAAA,CAAKC,CAAL,CAAW,EAAX,CAAe,CANxB,EAQS9jD,CAAA,CAAKC,CAAL,CAAW,EAAX,CAAe,CAfD,CAjEzB,GAAM,CAAAhG,EAAA,CAAYsE,CAAZ,CAAN,CAA2B,MAAOA,EAClCglD,EAAA,CAAgB/oD,CAAA,CAAQ+oD,CAAR,CAAA,CAAyBA,CAAzB,CAAyC,CAACA,CAAD,CAC5B,EAA7B,GAAIA,CAAAnpD,OAAJ,GAAkCmpD,CAAlC,CAAkD,CAAC,GAAD,CAAlD,CACAA,EAAA,CAAgBA,CAAAQ,IAAA,CAAkB,QAAQ,CAACC,CAAD,CAAY,CAAA,IAChDL,EAAa,CAAA,CADmC,CAC5Bl+C,EAAMu+C,CAANv+C,EAAmB7I,EAC3C,IAAIrC,CAAA,CAASypD,CAAT,CAAJ,CAAyB,CACvB,GAA4B,GAA5B,EAAKA,CAAApkD,OAAA,CAAiB,CAAjB,CAAL,EAA0D,GAA1D,EAAmCokD,CAAApkD,OAAA,CAAiB,CAAjB,CAAnC,CACE+jD,CACA,CADoC,GACpC,EADaK,CAAApkD,OAAA,CAAiB,CAAjB,CACb,CAAAokD,CAAA,CAAYA,CAAArgC,UAAA,CAAoB,CAApB,CAEd,IAAkB,EAAlB,GAAIqgC,CAAJ,CAEE,MAAOP,EAAA,CAAkBr0B,CAAlB,CAA2Bu0B,CAA3B,CAETl+C,EAAA,CAAMmM,CAAA,CAAOoyC,CAAP,CACN,IAAIv+C,CAAAgE,SAAJ,CAAkB,CAChB,IAAI7O,EAAM6K,CAAA,EACV,OAAOg+C,EAAA,CAAkB,QAAQ,CAAC/4C,CAAD,CAAI+kB,CAAJ,CAAO,CACtC,MAAOL,EAAA,CAAQ1kB,CAAA,CAAE9P,CAAF,CAAR,CAAgB60B,CAAA,CAAE70B,CAAF,CAAhB,CAD+B,CAAjC,CAEJ+oD,CAFI,CAFS,CAVK,CAiBzB,MAAOF,EAAA,CAAkB,QAAQ,CAAC/4C,CAAD,CAAI+kB,CAAJ,CAAO,CACtC,MAAOL,EAAA,CAAQ3pB,CAAA,CAAIiF,CAAJ,CAAR,CAAejF,CAAA,CAAIgqB,CAAJ,CAAf,CAD+B,CAAjC,CAEJk0B,CAFI,CAnB6C,CAAtC,CAuBhB,OAAOrjD,GAAAvF,KAAA,CAAWwD,CAAX,CAAAnD,KAAA,CAAuBqoD,CAAA,CAE9BnF,QAAmB,CAACx+C,CAAD;AAAKC,CAAL,CAAS,CAC1B,IAAS,IAAA1E,EAAI,CAAb,CAAgBA,CAAhB,CAAoBkoD,CAAAnpD,OAApB,CAA0CiB,CAAA,EAA1C,CAA+C,CAC7C,IAAIqoD,EAAOH,CAAA,CAAcloD,CAAd,CAAA,CAAiByE,CAAjB,CAAqBC,CAArB,CACX,IAAa,CAAb,GAAI2jD,CAAJ,CAAgB,MAAOA,EAFsB,CAI/C,MAAO,EALmB,CAFE,CAA8BF,CAA9B,CAAvB,CA3B2C,CADvB,CAwF/BS,QAASA,GAAW,CAACr6C,CAAD,CAAY,CAC1B/O,CAAA,CAAW+O,CAAX,CAAJ,GACEA,CADF,CACc,CACV+a,KAAM/a,CADI,CADd,CAKAA,EAAA2d,SAAA,CAAqB3d,CAAA2d,SAArB,EAA2C,IAC3C,OAAOzqB,GAAA,CAAQ8M,CAAR,CAPuB,CAohBhCs6C,QAASA,GAAc,CAAC9lD,CAAD,CAAUmsB,CAAV,CAAiB+D,CAAjB,CAAyBpe,CAAzB,CAAmCc,CAAnC,CAAiD,CAAA,IAClEjG,EAAO,IAD2D,CAElEo5C,EAAW,EAFuD,CAIlEC,EAAar5C,CAAAs5C,aAAbD,CAAiChmD,CAAA5B,OAAA,EAAA+J,WAAA,CAA4B,MAA5B,CAAjC69C,EAAwEE,EAG5Ev5C,EAAAw5C,OAAA,CAAc,EACdx5C,EAAAy5C,UAAA,CAAiB,EACjBz5C,EAAA05C,SAAA,CAAgB1qD,CAChBgR,EAAA25C,MAAA,CAAa1zC,CAAA,CAAauZ,CAAAjnB,KAAb,EAA2BinB,CAAA9d,OAA3B,EAA2C,EAA3C,CAAA,CAA+C6hB,CAA/C,CACbvjB,EAAA45C,OAAA,CAAc,CAAA,CACd55C,EAAA65C,UAAA,CAAiB,CAAA,CACjB75C,EAAA85C,OAAA,CAAc,CAAA,CACd95C,EAAA+5C,SAAA,CAAgB,CAAA,CAChB/5C,EAAAg6C,WAAA,CAAkB,CAAA,CAElBX,EAAAY,YAAA,CAAuBj6C,CAAvB,CAaAA,EAAAk6C,mBAAA,CAA0BC,QAAQ,EAAG,CACnCzqD,CAAA,CAAQ0pD,CAAR,CAAkB,QAAQ,CAACgB,CAAD,CAAU,CAClCA,CAAAF,mBAAA,EADkC,CAApC,CADmC,CAiBrCl6C,EAAAq6C,iBAAA,CAAwBC,QAAQ,EAAG,CACjC5qD,CAAA,CAAQ0pD,CAAR;AAAkB,QAAQ,CAACgB,CAAD,CAAU,CAClCA,CAAAC,iBAAA,EADkC,CAApC,CADiC,CAenCr6C,EAAAi6C,YAAA,CAAmBM,QAAQ,CAACH,CAAD,CAAU,CAGnC19C,EAAA,CAAwB09C,CAAAT,MAAxB,CAAuC,OAAvC,CACAP,EAAAllD,KAAA,CAAckmD,CAAd,CAEIA,EAAAT,MAAJ,GACE35C,CAAA,CAAKo6C,CAAAT,MAAL,CADF,CACwBS,CADxB,CANmC,CAYrCp6C,EAAAw6C,gBAAA,CAAuBC,QAAQ,CAACL,CAAD,CAAUM,CAAV,CAAmB,CAChD,IAAIC,EAAUP,CAAAT,MAEV35C,EAAA,CAAK26C,CAAL,CAAJ,GAAsBP,CAAtB,EACE,OAAOp6C,CAAA,CAAK26C,CAAL,CAET36C,EAAA,CAAK06C,CAAL,CAAA,CAAgBN,CAChBA,EAAAT,MAAA,CAAgBe,CAPgC,CAmBlD16C,EAAA46C,eAAA,CAAsBC,QAAQ,CAACT,CAAD,CAAU,CAClCA,CAAAT,MAAJ,EAAqB35C,CAAA,CAAKo6C,CAAAT,MAAL,CAArB,GAA6CS,CAA7C,EACE,OAAOp6C,CAAA,CAAKo6C,CAAAT,MAAL,CAETjqD,EAAA,CAAQsQ,CAAA05C,SAAR,CAAuB,QAAQ,CAACjpD,CAAD,CAAQ8H,CAAR,CAAc,CAC3CyH,CAAA86C,aAAA,CAAkBviD,CAAlB,CAAwB,IAAxB,CAA8B6hD,CAA9B,CAD2C,CAA7C,CAGA1qD,EAAA,CAAQsQ,CAAAw5C,OAAR,CAAqB,QAAQ,CAAC/oD,CAAD,CAAQ8H,CAAR,CAAc,CACzCyH,CAAA86C,aAAA,CAAkBviD,CAAlB,CAAwB,IAAxB,CAA8B6hD,CAA9B,CADyC,CAA3C,CAGA1qD,EAAA,CAAQsQ,CAAAy5C,UAAR,CAAwB,QAAQ,CAAChpD,CAAD,CAAQ8H,CAAR,CAAc,CAC5CyH,CAAA86C,aAAA,CAAkBviD,CAAlB,CAAwB,IAAxB,CAA8B6hD,CAA9B,CAD4C,CAA9C,CAIA7mD,GAAA,CAAY6lD,CAAZ,CAAsBgB,CAAtB,CAdsC,CA2BxCW,GAAA,CAAqB,CACnBC,KAAM,IADa,CAEnB99B,SAAU7pB,CAFS,CAGnB4nD,IAAKA,QAAQ,CAAC7C,CAAD,CAASzb,CAAT,CAAmBnhC,CAAnB,CAA+B,CAC1C,IAAIgY,EAAO4kC,CAAA,CAAOzb,CAAP,CACNnpB;CAAL,CAIiB,EAJjB,GAGcA,CAAA9f,QAAAD,CAAa+H,CAAb/H,CAHd,EAKI+f,CAAAtf,KAAA,CAAUsH,CAAV,CALJ,CACE48C,CAAA,CAAOzb,CAAP,CADF,CACqB,CAACnhC,CAAD,CAHqB,CAHzB,CAcnB0/C,MAAOA,QAAQ,CAAC9C,CAAD,CAASzb,CAAT,CAAmBnhC,CAAnB,CAA+B,CAC5C,IAAIgY,EAAO4kC,CAAA,CAAOzb,CAAP,CACNnpB,EAAL,GAGAjgB,EAAA,CAAYigB,CAAZ,CAAkBhY,CAAlB,CACA,CAAoB,CAApB,GAAIgY,CAAAnkB,OAAJ,EACE,OAAO+oD,CAAA,CAAOzb,CAAP,CALT,CAF4C,CAd3B,CAwBnB0c,WAAYA,CAxBO,CAyBnBl0C,SAAUA,CAzBS,CAArB,CAsCAnF,EAAAm7C,UAAA,CAAiBC,QAAQ,EAAG,CAC1Bj2C,CAAAsK,YAAA,CAAqBpc,CAArB,CAA8BgoD,EAA9B,CACAl2C,EAAAqK,SAAA,CAAkBnc,CAAlB,CAA2BioD,EAA3B,CACAt7C,EAAA45C,OAAA,CAAc,CAAA,CACd55C,EAAA65C,UAAA,CAAiB,CAAA,CACjBR,EAAA8B,UAAA,EAL0B,CAsB5Bn7C,EAAAu7C,aAAA,CAAoBC,QAAQ,EAAG,CAC7Br2C,CAAAs2C,SAAA,CAAkBpoD,CAAlB,CAA2BgoD,EAA3B,CAA2CC,EAA3C,CAtOcI,eAsOd,CACA17C,EAAA45C,OAAA,CAAc,CAAA,CACd55C,EAAA65C,UAAA,CAAiB,CAAA,CACjB75C,EAAAg6C,WAAA,CAAkB,CAAA,CAClBtqD,EAAA,CAAQ0pD,CAAR,CAAkB,QAAQ,CAACgB,CAAD,CAAU,CAClCA,CAAAmB,aAAA,EADkC,CAApC,CAL6B,CAuB/Bv7C,EAAA27C,cAAA,CAAqBC,QAAQ,EAAG,CAC9BlsD,CAAA,CAAQ0pD,CAAR,CAAkB,QAAQ,CAACgB,CAAD,CAAU,CAClCA,CAAAuB,cAAA,EADkC,CAApC,CAD8B,CAahC37C,EAAA67C,cAAA,CAAqBC,QAAQ,EAAG,CAC9B32C,CAAAqK,SAAA,CAAkBnc,CAAlB,CA1QcqoD,cA0Qd,CACA17C;CAAAg6C,WAAA,CAAkB,CAAA,CAClBX,EAAAwC,cAAA,EAH8B,CAxNsC,CA84CxEE,QAASA,GAAoB,CAACf,CAAD,CAAO,CAClCA,CAAAgB,YAAA9nD,KAAA,CAAsB,QAAQ,CAACzD,CAAD,CAAQ,CACpC,MAAOuqD,EAAAiB,SAAA,CAAcxrD,CAAd,CAAA,CAAuBA,CAAvB,CAA+BA,CAAA4B,SAAA,EADF,CAAtC,CADkC,CAWpC6pD,QAASA,GAAa,CAACziD,CAAD,CAAQpG,CAAR,CAAiBN,CAAjB,CAAuBioD,CAAvB,CAA6BvzC,CAA7B,CAAuCpC,CAAvC,CAAiD,CACrE,IAAIgG,EAAO/X,CAAA,CAAUD,CAAA,CAAQ,CAAR,CAAAgY,KAAV,CAKX,IAAK+kC,CAAA3oC,CAAA2oC,QAAL,CAAuB,CACrB,IAAI+L,EAAY,CAAA,CAEhB9oD,EAAAgI,GAAA,CAAW,kBAAX,CAA+B,QAAQ,CAACzB,CAAD,CAAO,CAC5CuiD,CAAA,CAAY,CAAA,CADgC,CAA9C,CAIA9oD,EAAAgI,GAAA,CAAW,gBAAX,CAA6B,QAAQ,EAAG,CACtC8gD,CAAA,CAAY,CAAA,CACZ7lC,EAAA,EAFsC,CAAxC,CAPqB,CAavB,IAAIA,EAAWA,QAAQ,CAAC8lC,CAAD,CAAK,CACtBxpB,CAAJ,GACEvtB,CAAAwT,MAAAI,OAAA,CAAsB2Z,CAAtB,CACA,CAAAA,CAAA,CAAU,IAFZ,CAIA,IAAIupB,CAAAA,CAAJ,CAAA,CAL0B,IAMtB1rD,EAAQ4C,CAAA0C,IAAA,EACRwY,EAAAA,CAAQ6tC,CAAR7tC,EAAc6tC,CAAA/wC,KAKL,WAAb,GAAIA,CAAJ,EAA6BtY,CAAAspD,OAA7B,EAA4D,OAA5D,GAA4CtpD,CAAAspD,OAA5C,GACE5rD,CADF,CACU8Z,CAAA,CAAK9Z,CAAL,CADV,CAOA,EAAIuqD,CAAAsB,WAAJ,GAAwB7rD,CAAxB,EAA4C,EAA5C,GAAkCA,CAAlC,EAAkDuqD,CAAAuB,sBAAlD,GACEvB,CAAAwB,cAAA,CAAmB/rD,CAAnB,CAA0B8d,CAA1B,CAfF,CAL0B,CA0B5B,IAAI9G,CAAAupC,SAAA,CAAkB,OAAlB,CAAJ,CACE39C,CAAAgI,GAAA,CAAW,OAAX;AAAoBib,CAApB,CADF,KAEO,CACL,IAAIsc,CAAJ,CAEI6pB,EAAgBA,QAAQ,CAACL,CAAD,CAAKv8C,CAAL,CAAY68C,CAAZ,CAAuB,CAC5C9pB,CAAL,GACEA,CADF,CACYvtB,CAAAwT,MAAA,CAAe,QAAQ,EAAG,CAClC+Z,CAAA,CAAU,IACL/yB,EAAL,EAAcA,CAAApP,MAAd,GAA8BisD,CAA9B,EACEpmC,CAAA,CAAS8lC,CAAT,CAHgC,CAA1B,CADZ,CADiD,CAWnD/oD,EAAAgI,GAAA,CAAW,SAAX,CAAsB,QAAQ,CAACkT,CAAD,CAAQ,CACpC,IAAI1e,EAAM0e,CAAAouC,QAIE,GAAZ,GAAI9sD,CAAJ,EAAmB,EAAnB,CAAwBA,CAAxB,EAAqC,EAArC,CAA+BA,CAA/B,EAA6C,EAA7C,EAAmDA,CAAnD,EAAiE,EAAjE,EAA0DA,CAA1D,EAEA4sD,CAAA,CAAcluC,CAAd,CAAqB,IAArB,CAA2B,IAAA9d,MAA3B,CAPoC,CAAtC,CAWA,IAAIgX,CAAAupC,SAAA,CAAkB,OAAlB,CAAJ,CACE39C,CAAAgI,GAAA,CAAW,WAAX,CAAwBohD,CAAxB,CA1BG,CAgCPppD,CAAAgI,GAAA,CAAW,QAAX,CAAqBib,CAArB,CAEA0kC,EAAA4B,QAAA,CAAeC,QAAQ,EAAG,CACxBxpD,CAAA0C,IAAA,CAAYilD,CAAAiB,SAAA,CAAcjB,CAAAsB,WAAd,CAAA,CAAiC,EAAjC,CAAsCtB,CAAAsB,WAAlD,CADwB,CAjF2C,CAsHvEQ,QAASA,GAAgB,CAAClgC,CAAD,CAASmgC,CAAT,CAAkB,CACzC,MAAO,SAAQ,CAACC,CAAD,CAAM/G,CAAN,CAAY,CAAA,IACrB1+C,CADqB,CACdyhD,CAEX,IAAI5mD,EAAA,CAAO4qD,CAAP,CAAJ,CACE,MAAOA,EAGT,IAAIxtD,CAAA,CAASwtD,CAAT,CAAJ,CAAmB,CAII,GAArB,EAAIA,CAAAnoD,OAAA,CAAW,CAAX,CAAJ,EAA0D,GAA1D,EAA4BmoD,CAAAnoD,OAAA,CAAWmoD,CAAA3tD,OAAX,CAAwB,CAAxB,CAA5B,GACE2tD,CADF,CACQA,CAAApkC,UAAA,CAAc,CAAd,CAAiBokC,CAAA3tD,OAAjB,CAA8B,CAA9B,CADR,CAGA,IAAI4tD,EAAAljD,KAAA,CAAqBijD,CAArB,CAAJ,CACE,MAAO,KAAI5oD,IAAJ,CAAS4oD,CAAT,CAETpgC,EAAApoB,UAAA;AAAmB,CAGnB,IAFA+C,CAEA,CAFQqlB,CAAAjT,KAAA,CAAYqzC,CAAZ,CAER,CAqBE,MApBAzlD,EAAA0a,MAAA,EAoBO,CAlBL+mC,CAkBK,CAnBH/C,CAAJ,CACQ,CACJiH,KAAMjH,CAAAS,YAAA,EADF,CAEJyG,GAAIlH,CAAAW,SAAA,EAAJuG,CAAsB,CAFlB,CAGJC,GAAInH,CAAAY,QAAA,EAHA,CAIJwG,GAAIpH,CAAAqH,SAAA,EAJA,CAKJC,GAAItH,CAAAgC,WAAA,EALA,CAMJuF,GAAIvH,CAAAwH,WAAA,EANA,CAOJC,IAAKzH,CAAA0H,gBAAA,EAALD,CAA8B,GAP1B,CADR,CAWQ,CAAER,KAAM,IAAR,CAAcC,GAAI,CAAlB,CAAqBC,GAAI,CAAzB,CAA4BC,GAAI,CAAhC,CAAmCE,GAAI,CAAvC,CAA0CC,GAAI,CAA9C,CAAiDE,IAAK,CAAtD,CAQD,CALPhuD,CAAA,CAAQ6H,CAAR,CAAe,QAAQ,CAACqmD,CAAD,CAAOnqD,CAAP,CAAc,CAC/BA,CAAJ,CAAYspD,CAAA1tD,OAAZ,GACE2pD,CAAA,CAAI+D,CAAA,CAAQtpD,CAAR,CAAJ,CADF,CACwB,CAACmqD,CADzB,CADmC,CAArC,CAKO,CAAA,IAAIxpD,IAAJ,CAAS4kD,CAAAkE,KAAT,CAAmBlE,CAAAmE,GAAnB,CAA4B,CAA5B,CAA+BnE,CAAAoE,GAA/B,CAAuCpE,CAAAqE,GAAvC,CAA+CrE,CAAAuE,GAA/C,CAAuDvE,CAAAwE,GAAvD,EAAiE,CAAjE,CAA8E,GAA9E,CAAoExE,CAAA0E,IAApE,EAAsF,CAAtF,CAlCQ,CAsCnB,MAAOG,IA7CkB,CADc,CAkD3CC,QAASA,GAAmB,CAACzyC,CAAD,CAAOuR,CAAP,CAAemhC,CAAf,CAA0BnG,CAA1B,CAAkC,CAC5D,MAAOoG,SAA6B,CAACvkD,CAAD,CAAQpG,CAAR,CAAiBN,CAAjB,CAAuBioD,CAAvB,CAA6BvzC,CAA7B,CAAuCpC,CAAvC,CAAiDU,CAAjD,CAA0D,CA6D5Fk4C,QAASA,EAAW,CAACxtD,CAAD,CAAQ,CAE1B,MAAOA,EAAP,EAAgB,EAAEA,CAAA4D,QAAF,EAAmB5D,CAAA4D,QAAA,EAAnB,GAAuC5D,CAAA4D,QAAA,EAAvC,CAFU,CAK5B6pD,QAASA,EAAsB,CAACnoD,CAAD,CAAM,CACnC,MAAO9D,EAAA,CAAU8D,CAAV,CAAA,CAAkB3D,EAAA,CAAO2D,CAAP,CAAA,CAAcA,CAAd,CAAoBgoD,CAAA,CAAUhoD,CAAV,CAAtC,CAAwD/G,CAD5B,CAjErCmvD,EAAA,CAAgB1kD,CAAhB,CAAuBpG,CAAvB,CAAgCN,CAAhC,CAAsCioD,CAAtC,CACAkB;EAAA,CAAcziD,CAAd,CAAqBpG,CAArB,CAA8BN,CAA9B,CAAoCioD,CAApC,CAA0CvzC,CAA1C,CAAoDpC,CAApD,CACA,KAAIwyC,EAAWmD,CAAXnD,EAAmBmD,CAAAoD,SAAnBvG,EAAoCmD,CAAAoD,SAAAvG,SAAxC,CACIwG,CAEJrD,EAAAsD,aAAA,CAAoBjzC,CACpB2vC,EAAAuD,SAAArqD,KAAA,CAAmB,QAAQ,CAACzD,CAAD,CAAQ,CACjC,MAAIuqD,EAAAiB,SAAA,CAAcxrD,CAAd,CAAJ,CAAiC,IAAjC,CACImsB,CAAA7iB,KAAA,CAAYtJ,CAAZ,CAAJ,EAIM+tD,CAIGA,CAJUT,CAAA,CAAUttD,CAAV,CAAiB4tD,CAAjB,CAIVG,CAHU,KAGVA,GAHH3G,CAGG2G,EAFLA,CAAAxG,WAAA,CAAsBwG,CAAAvG,WAAA,EAAtB,CAAgDuG,CAAAtG,kBAAA,EAAhD,CAEKsG,CAAAA,CART,EAUOxvD,CAZ0B,CAAnC,CAeAgsD,EAAAgB,YAAA9nD,KAAA,CAAsB,QAAQ,CAACzD,CAAD,CAAQ,CACpC,GAAIA,CAAJ,EAAc,CAAA2B,EAAA,CAAO3B,CAAP,CAAd,CACE,KAAMguD,GAAA,CAAe,SAAf,CAAyDhuD,CAAzD,CAAN,CAEF,GAAIwtD,CAAA,CAAYxtD,CAAZ,CAAJ,CAAwB,CAEtB,IADA4tD,CACA,CADe5tD,CACf,GAAiC,KAAjC,GAAoBonD,CAApB,CAAwC,CACtC,IAAI6G,EAAiB,GAAjBA,CAAyBL,CAAAnG,kBAAA,EAC7BmG,EAAA,CAAe,IAAIjqD,IAAJ,CAASiqD,CAAAhqD,QAAA,EAAT,CAAkCqqD,CAAlC,CAFuB,CAIxC,MAAO34C,EAAA,CAAQ,MAAR,CAAA,CAAgBtV,CAAhB,CAAuBmnD,CAAvB,CAA+BC,CAA/B,CANe,CAQtBwG,CAAA,CAAe,IACf,OAAO,EAb2B,CAAtC,CAiBA,IAAIpsD,CAAA,CAAUc,CAAAyiD,IAAV,CAAJ,EAA2BziD,CAAA4rD,MAA3B,CAAuC,CACrC,IAAIC,CACJ5D,EAAA6D,YAAArJ,IAAA,CAAuBsJ,QAAQ,CAACruD,CAAD,CAAQ,CACrC,MAAO,CAACwtD,CAAA,CAAYxtD,CAAZ,CAAR,EAA8BuB,CAAA,CAAY4sD,CAAZ,CAA9B,EAAqDb,CAAA,CAAUttD,CAAV,CAArD,EAAyEmuD,CADpC,CAGvC7rD;CAAAuxB,SAAA,CAAc,KAAd,CAAqB,QAAQ,CAACvuB,CAAD,CAAM,CACjC6oD,CAAA,CAASV,CAAA,CAAuBnoD,CAAvB,CACTilD,EAAA+D,UAAA,EAFiC,CAAnC,CALqC,CAWvC,GAAI9sD,CAAA,CAAUc,CAAAi0B,IAAV,CAAJ,EAA2Bj0B,CAAAisD,MAA3B,CAAuC,CACrC,IAAIC,CACJjE,EAAA6D,YAAA73B,IAAA,CAAuBk4B,QAAQ,CAACzuD,CAAD,CAAQ,CACrC,MAAO,CAACwtD,CAAA,CAAYxtD,CAAZ,CAAR,EAA8BuB,CAAA,CAAYitD,CAAZ,CAA9B,EAAqDlB,CAAA,CAAUttD,CAAV,CAArD,EAAyEwuD,CADpC,CAGvClsD,EAAAuxB,SAAA,CAAc,KAAd,CAAqB,QAAQ,CAACvuB,CAAD,CAAM,CACjCkpD,CAAA,CAASf,CAAA,CAAuBnoD,CAAvB,CACTilD,EAAA+D,UAAA,EAFiC,CAAnC,CALqC,CAlDqD,CADlC,CAyE9DZ,QAASA,GAAe,CAAC1kD,CAAD,CAAQpG,CAAR,CAAiBN,CAAjB,CAAuBioD,CAAvB,CAA6B,CAGnD,CADuBA,CAAAuB,sBACvB,CADoDrqD,CAAA,CADzCmB,CAAAT,CAAQ,CAARA,CACkDusD,SAAT,CACpD,GACEnE,CAAAuD,SAAArqD,KAAA,CAAmB,QAAQ,CAACzD,CAAD,CAAQ,CACjC,IAAI0uD,EAAW9rD,CAAAP,KAAA,CAp2mBSssD,UAo2mBT,CAAXD,EAAoD,EAKxD,OAAOA,EAAAE,SAAA,EAAsBC,CAAAH,CAAAG,aAAtB,CAA8CtwD,CAA9C,CAA0DyB,CANhC,CAAnC,CAJiD,CAqHrD8uD,QAASA,GAAiB,CAAC14C,CAAD,CAASjX,CAAT,CAAkB2I,CAAlB,CAAwBg1B,CAAxB,CAAoCiyB,CAApC,CAA8C,CAEtE,GAAIvtD,CAAA,CAAUs7B,CAAV,CAAJ,CAA2B,CACzBkyB,CAAA,CAAU54C,CAAA,CAAO0mB,CAAP,CACV,IAAK7uB,CAAA+gD,CAAA/gD,SAAL,CACE,KAAMzP,EAAA,CAAO,SAAP,CAAA,CAAkB,WAAlB,CACiCsJ,CADjC,CACuCg1B,CADvC,CAAN,CAGF,MAAOkyB,EAAA,CAAQ7vD,CAAR,CANkB,CAQ3B,MAAO4vD,EAV+D,CA8jBxEE,QAASA,GAAc,CAACnnD,CAAD,CAAO+T,CAAP,CAAiB,CACtC/T,CAAA,CAAO,SAAP,CAAmBA,CACnB,OAAO,CAAC,UAAD;AAAa,QAAQ,CAAC4M,CAAD,CAAW,CA+ErCw6C,QAASA,EAAe,CAAC/yB,CAAD,CAAUC,CAAV,CAAmB,CACzC,IAAIF,EAAS,EAAb,CAGSr8B,EAAI,CADb,EAAA,CACA,IAAA,CAAgBA,CAAhB,CAAoBs8B,CAAAv9B,OAApB,CAAoCiB,CAAA,EAApC,CAAyC,CAEvC,IADA,IAAIw8B,EAAQF,CAAA,CAAQt8B,CAAR,CAAZ,CACSa,EAAI,CAAb,CAAgBA,CAAhB,CAAoB07B,CAAAx9B,OAApB,CAAoC8B,CAAA,EAApC,CACE,GAAI27B,CAAJ,EAAaD,CAAA,CAAQ17B,CAAR,CAAb,CAAyB,SAAS,CAEpCw7B,EAAAz4B,KAAA,CAAY44B,CAAZ,CALuC,CAOzC,MAAOH,EAXkC,CAc3CizB,QAASA,EAAY,CAAC50B,CAAD,CAAW,CAC9B,GAAI,CAAAv7B,CAAA,CAAQu7B,CAAR,CAAJ,CAEO,CAAA,GAAIx7B,CAAA,CAASw7B,CAAT,CAAJ,CACL,MAAOA,EAAA73B,MAAA,CAAe,GAAf,CACF,IAAIjB,CAAA,CAAS84B,CAAT,CAAJ,CAAwB,CAC7B,IAAIzb,EAAU,EACd7f,EAAA,CAAQs7B,CAAR,CAAkB,QAAQ,CAAC8H,CAAD,CAAIpI,CAAJ,CAAO,CAC3BoI,CAAJ,GACEvjB,CADF,CACYA,CAAAna,OAAA,CAAes1B,CAAAv3B,MAAA,CAAQ,GAAR,CAAf,CADZ,CAD+B,CAAjC,CAKA,OAAOoc,EAPsB,CAFxB,CAWP,MAAOyb,EAduB,CA5FhC,MAAO,CACLxO,SAAU,IADL,CAEL5C,KAAMA,QAAQ,CAACngB,CAAD,CAAQpG,CAAR,CAAiBN,CAAjB,CAAuB,CAiCnC8sD,QAASA,EAAiB,CAACtwC,CAAD,CAAUqnB,CAAV,CAAiB,CACzC,IAAIkpB,EAAczsD,CAAAuG,KAAA,CAAa,cAAb,CAAdkmD,EAA8C,EAAlD,CACIC,EAAkB,EACtBrwD,EAAA,CAAQ6f,CAAR,CAAiB,QAAQ,CAAC4N,CAAD,CAAY,CACnC,GAAY,CAAZ,CAAIyZ,CAAJ,EAAiBkpB,CAAA,CAAY3iC,CAAZ,CAAjB,CACE2iC,CAAA,CAAY3iC,CAAZ,CACA,EAD0B2iC,CAAA,CAAY3iC,CAAZ,CAC1B,EADoD,CACpD,EADyDyZ,CACzD,CAAIkpB,CAAA,CAAY3iC,CAAZ,CAAJ,GAA+B,EAAU,CAAV,CAAEyZ,CAAF,CAA/B,EACEmpB,CAAA7rD,KAAA,CAAqBipB,CAArB,CAJ+B,CAArC,CAQA9pB,EAAAuG,KAAA,CAAa,cAAb,CAA6BkmD,CAA7B,CACA,OAAOC,EAAAroD,KAAA,CAAqB,GAArB,CAZkC,CA4B3CsoD,QAASA,EAAkB,CAACprC,CAAD,CAAS,CAClC,GAAiB,CAAA,CAAjB;AAAItI,CAAJ,EAAyB7S,CAAAwmD,OAAzB,CAAwC,CAAxC,GAA8C3zC,CAA9C,CAAwD,CACtD,IAAI4e,EAAa00B,CAAA,CAAahrC,CAAb,EAAuB,EAAvB,CACjB,IAAKC,CAAAA,CAAL,CAAa,CAxCf,IAAIqW,EAAa20B,CAAA,CAyCF30B,CAzCE,CAA2B,CAA3B,CACjBn4B,EAAAg4B,UAAA,CAAeG,CAAf,CAuCe,CAAb,IAEO,IAAK,CAAAp2B,EAAA,CAAO8f,CAAP,CAAcC,CAAd,CAAL,CAA4B,CAEnByT,IAAAA,EADGs3B,CAAAt3B,CAAazT,CAAbyT,CACHA,CAnBd6C,EAAQw0B,CAAA,CAmBkBz0B,CAnBlB,CAA4B5C,CAA5B,CAmBMA,CAlBd+C,EAAWs0B,CAAA,CAAgBr3B,CAAhB,CAkBe4C,CAlBf,CAkBG5C,CAjBlB6C,EAAQ00B,CAAA,CAAkB10B,CAAlB,CAAyB,CAAzB,CAiBU7C,CAhBlB+C,EAAWw0B,CAAA,CAAkBx0B,CAAlB,CAA6B,EAA7B,CACPF,EAAJ,EAAaA,CAAA97B,OAAb,EACE8V,CAAAqK,SAAA,CAAkBnc,CAAlB,CAA2B83B,CAA3B,CAEEE,EAAJ,EAAgBA,CAAAh8B,OAAhB,EACE8V,CAAAsK,YAAA,CAAqBpc,CAArB,CAA8Bg4B,CAA9B,CASmC,CAJmB,CASxDxW,CAAA,CAASlgB,EAAA,CAAYigB,CAAZ,CAVyB,CA5DpC,IAAIC,CAEJpb,EAAAhH,OAAA,CAAaM,CAAA,CAAKwF,CAAL,CAAb,CAAyBynD,CAAzB,CAA6C,CAAA,CAA7C,CAEAjtD,EAAAuxB,SAAA,CAAc,OAAd,CAAuB,QAAQ,CAAC7zB,CAAD,CAAQ,CACrCuvD,CAAA,CAAmBvmD,CAAA4yC,MAAA,CAAYt5C,CAAA,CAAKwF,CAAL,CAAZ,CAAnB,CADqC,CAAvC,CAKa,UAAb,GAAIA,CAAJ,EACEkB,CAAAhH,OAAA,CAAa,QAAb,CAAuB,QAAQ,CAACwtD,CAAD,CAASC,CAAT,CAAoB,CAEjD,IAAIC,EAAMF,CAANE,CAAe,CACnB,IAAIA,CAAJ,IAAaD,CAAb,CAAyB,CAAzB,EAA6B,CAC3B,IAAI3wC,EAAUqwC,CAAA,CAAanmD,CAAA4yC,MAAA,CAAYt5C,CAAA,CAAKwF,CAAL,CAAZ,CAAb,CACd4nD,EAAA,GAAQ7zC,CAAR,EAQA4e,CACJ,CADiB20B,CAAA,CAPAtwC,CAOA,CAA2B,CAA3B,CACjB,CAAAxc,CAAAg4B,UAAA,CAAeG,CAAf,CATI,GAaAA,CACJ,CADiB20B,CAAA,CAXGtwC,CAWH,CAA4B,EAA5B,CACjB,CAAAxc,CAAAk4B,aAAA,CAAkBC,CAAlB,CAdI,CAF2B,CAHoB,CAAnD,CAXiC,CAFhC,CAD8B,CAAhC,CAF+B,CAglGxC6vB,QAASA,GAAoB,CAACnrD,CAAD,CAAU,CA6ErCwwD,QAASA,EAAiB,CAACjjC,CAAD,CAAYkjC,CAAZ,CAAyB,CAC7CA,CAAJ,EAAoB,CAAAC,CAAA,CAAWnjC,CAAX,CAApB,EACEhY,CAAAqK,SAAA,CAAkB0N,CAAlB,CAA4BC,CAA5B,CACA;AAAAmjC,CAAA,CAAWnjC,CAAX,CAAA,CAAwB,CAAA,CAF1B,EAGYkjC,CAAAA,CAHZ,EAG2BC,CAAA,CAAWnjC,CAAX,CAH3B,GAIEhY,CAAAsK,YAAA,CAAqByN,CAArB,CAA+BC,CAA/B,CACA,CAAAmjC,CAAA,CAAWnjC,CAAX,CAAA,CAAwB,CAAA,CAL1B,CADiD,CAUnDojC,QAASA,EAAmB,CAACC,CAAD,CAAqBC,CAArB,CAA8B,CACxDD,CAAA,CAAqBA,CAAA,CAAqB,GAArB,CAA2B7lD,EAAA,CAAW6lD,CAAX,CAA+B,GAA/B,CAA3B,CAAiE,EAEtFJ,EAAA,CAAkBM,EAAlB,CAAgCF,CAAhC,CAAgE,CAAA,CAAhE,GAAoDC,CAApD,CACAL,EAAA,CAAkBO,EAAlB,CAAkCH,CAAlC,CAAkE,CAAA,CAAlE,GAAsDC,CAAtD,CAJwD,CAvFrB,IACjCzF,EAAOprD,CAAAorD,KAD0B,CAEjC99B,EAAWttB,CAAAstB,SAFsB,CAGjCojC,EAAa,EAHoB,CAIjCrF,EAAMrrD,CAAAqrD,IAJ2B,CAKjCC,EAAQtrD,CAAAsrD,MALyB,CAMjC7B,EAAazpD,CAAAypD,WANoB,CAOjCl0C,EAAWvV,CAAAuV,SAEfm7C,EAAA,CAAWK,EAAX,CAAA,CAA4B,EAAEL,CAAA,CAAWI,EAAX,CAAF,CAA4BxjC,CAAA5N,SAAA,CAAkBoxC,EAAlB,CAA5B,CAE5B1F,EAAAF,aAAA,CAEA8F,QAAoB,CAACJ,CAAD,CAAqBzqC,CAArB,CAA4Bva,CAA5B,CAAwC,CACtDua,CAAJ,GAAc/mB,CAAd,EAgDKgsD,CAAA,SAGL,GAFEA,CAAA,SAEF,CAFe,EAEf,EAAAC,CAAA,CAAID,CAAA,SAAJ,CAlD2BwF,CAkD3B,CAlD+ChlD,CAkD/C,CAnDA,GAuDIw/C,CAAA,SAGJ,EAFEE,CAAA,CAAMF,CAAA,SAAN,CArD4BwF,CAqD5B,CArDgDhlD,CAqDhD,CAEF,CAAIqlD,EAAA,CAAc7F,CAAA,SAAd,CAAJ,GACEA,CAAA,SADF,CACehsD,CADf,CA1DA,CAKK0D,GAAA,CAAUqjB,CAAV,CAAL,CAIMA,CAAJ,EACEmlC,CAAA,CAAMF,CAAAxB,OAAN,CAAmBgH,CAAnB,CAAuChlD,CAAvC,CACA,CAAAy/C,CAAA,CAAID,CAAAvB,UAAJ,CAAoB+G,CAApB,CAAwChlD,CAAxC,CAFF,GAIEy/C,CAAA,CAAID,CAAAxB,OAAJ,CAAiBgH,CAAjB,CAAqChlD,CAArC,CACA,CAAA0/C,CAAA,CAAMF,CAAAvB,UAAN,CAAsB+G,CAAtB,CAA0ChlD,CAA1C,CALF,CAJF,EACE0/C,CAAA,CAAMF,CAAAxB,OAAN,CAAmBgH,CAAnB,CAAuChlD,CAAvC,CACA,CAAA0/C,CAAA,CAAMF,CAAAvB,UAAN,CAAsB+G,CAAtB,CAA0ChlD,CAA1C,CAFF,CAYIw/C,EAAAtB,SAAJ,EACE0G,CAAA,CAAkBU,EAAlB;AAAiC,CAAA,CAAjC,CAEA,CADA9F,CAAAlB,OACA,CADckB,CAAAjB,SACd,CAD8B/qD,CAC9B,CAAAuxD,CAAA,CAAoB,EAApB,CAAwB,IAAxB,CAHF,GAKEH,CAAA,CAAkBU,EAAlB,CAAiC,CAAA,CAAjC,CAGA,CAFA9F,CAAAlB,OAEA,CAFc+G,EAAA,CAAc7F,CAAAxB,OAAd,CAEd,CADAwB,CAAAjB,SACA,CADgB,CAACiB,CAAAlB,OACjB,CAAAyG,CAAA,CAAoB,EAApB,CAAwBvF,CAAAlB,OAAxB,CARF,CAiBEiH,EAAA,CADE/F,CAAAtB,SAAJ,EAAqBsB,CAAAtB,SAAA,CAAc8G,CAAd,CAArB,CACkBxxD,CADlB,CAEWgsD,CAAAxB,OAAA,CAAYgH,CAAZ,CAAJ,CACW,CAAA,CADX,CAEIxF,CAAAvB,UAAA,CAAe+G,CAAf,CAAJ,CACW,CAAA,CADX,CAGW,IAGlBD,EAAA,CAAoBC,CAApB,CAAwCO,CAAxC,CACA1H,EAAAyB,aAAA,CAAwB0F,CAAxB,CAA4CO,CAA5C,CAA2D/F,CAA3D,CA7C0D,CAbvB,CA+FvC6F,QAASA,GAAa,CAAC1xD,CAAD,CAAM,CAC1B,GAAIA,CAAJ,CACE,IAAS2D,IAAAA,CAAT,GAAiB3D,EAAjB,CACE,MAAO,CAAA,CAGX,OAAO,CAAA,CANmB,CArsuB5B,IAAI6xD,GAAsB,oBAA1B,CAgBI1tD,EAAYA,QAAQ,CAAC0jD,CAAD,CAAS,CAAC,MAAOxnD,EAAA,CAASwnD,CAAT,CAAA,CAAmBA,CAAAh8C,YAAA,EAAnB,CAA0Cg8C,CAAlD,CAhBjC,CAiBIjnD,GAAiBK,MAAAmiB,UAAAxiB,eAjBrB,CA6BImP,GAAYA,QAAQ,CAAC83C,CAAD,CAAS,CAAC,MAAOxnD,EAAA,CAASwnD,CAAT,CAAA,CAAmBA,CAAAjuC,YAAA,EAAnB,CAA0CiuC,CAAlD,CA7BjC,CAwDItH,EAxDJ,CAyDIl5C,CAzDJ,CA0DI4E,EA1DJ,CA2DI7F,GAAoB,EAAAA,MA3DxB,CA4DI5B,GAAoB,EAAAA,OA5DxB,CA6DIO,GAAoB,EAAAA,KA7DxB,CA8DI7B,GAAoBjC,MAAAmiB,UAAAlgB,SA9DxB,CA+DI4B,GAAoBhF,CAAA,CAAO,IAAP,CA/DxB,CAkEI+K,GAAoBlL,CAAAkL,QAApBA;CAAuClL,CAAAkL,QAAvCA,CAAwD,EAAxDA,CAlEJ,CAmEIqF,EAnEJ,CAoEI1O,GAAoB,CAMxB++C,GAAA,CAAO3gD,CAAAkyD,aAwMPrvD,EAAAugB,QAAA,CAAe,EAsBftgB,GAAAsgB,QAAA,CAAmB,EAuHnB,KAAI1iB,EAAUgkB,KAAAhkB,QAAd,CAuEI8a,EAAOA,QAAQ,CAAC9Z,CAAD,CAAQ,CACzB,MAAOjB,EAAA,CAASiB,CAAT,CAAA,CAAkBA,CAAA8Z,KAAA,EAAlB,CAAiC9Z,CADf,CAvE3B,CA8EIo9C,GAAkBA,QAAQ,CAACtM,CAAD,CAAI,CAChC,MAAOA,EAAAvqC,QAAA,CAAU,+BAAV,CAA2C,MAA3C,CAAAA,QAAA,CACU,OADV,CACmB,OADnB,CADyB,CA9ElC,CAqWIoI,GAAMA,QAAQ,EAAG,CACnB,GAAInN,CAAA,CAAUmN,EAAA8hD,UAAV,CAAJ,CAA8B,MAAO9hD,GAAA8hD,UAErC,KAAIC,EAAS,EAAG,CAAApyD,CAAA4J,cAAA,CAAuB,UAAvB,CAAH,EACG,CAAA5J,CAAA4J,cAAA,CAAuB,eAAvB,CADH,CAGb,IAAKwoD,CAAAA,CAAL,CACE,GAAI,CAEF,IAAIjf,QAAJ,CAAa,EAAb,CAFE,CAIF,MAAOvrC,CAAP,CAAU,CACVwqD,CAAA,CAAS,CAAA,CADC,CAKd,MAAQ/hD,GAAA8hD,UAAR,CAAwBC,CAhBL,CArWrB,CAmmBInpD,GAAiB,CAAC,KAAD,CAAQ,UAAR,CAAoB,KAApB,CAA2B,OAA3B,CAnmBrB,CAm6BI6C,GAAoB,QAn6BxB,CA26BIM,GAAkB,CAAA,CA36BtB,CA46BIW,EA56BJ,CA+jCIvM,GAAoB,CA/jCxB,CAgkCIwH,GAAiB,CAhkCrB,CAogDIkI,GAAU,CACZmiD,KAAM,QADM,CAEZC,MAAO,CAFK;AAGZC,MAAO,CAHK,CAIZC,IAAK,EAJO,CAKZC,SAAU,qBALE,CA6PdrlD,EAAAsuB,QAAA,CAAiB,OAz0EsB,KA20EnC3e,GAAU3P,CAAAwV,MAAV7F,CAAyB,EA30EU,CA40EnCE,GAAO,CAWX7P,EAAAH,MAAA,CAAeylD,QAAQ,CAAC7uD,CAAD,CAAO,CAE5B,MAAO,KAAA+e,MAAA,CAAW/e,CAAA,CAAK,IAAA63B,QAAL,CAAX,CAAP,EAAyC,EAFb,CAQ9B,KAAI7hB,GAAuB,iBAA3B,CACII,GAAkB,aADtB,CAEI04C,GAAiB,CAAEC,WAAY,UAAd,CAA0BC,WAAY,WAAtC,CAFrB,CAGIp3C,GAAevb,CAAA,CAAO,QAAP,CAHnB,CAkBIyb,GAAoB,4BAlBxB,CAmBInB,GAAc,WAnBlB,CAoBIG,GAAkB,WApBtB,CAqBIM,GAAmB,yEArBvB,CAuBIH,GAAU,CACZ,OAAU,CAAC,CAAD,CAAI,8BAAJ,CAAoC,WAApC,CADE,CAGZ,MAAS,CAAC,CAAD,CAAI,SAAJ,CAAe,UAAf,CAHG,CAIZ,IAAO,CAAC,CAAD,CAAI,mBAAJ;AAAyB,qBAAzB,CAJK,CAKZ,GAAM,CAAC,CAAD,CAAI,gBAAJ,CAAsB,kBAAtB,CALM,CAMZ,GAAM,CAAC,CAAD,CAAI,oBAAJ,CAA0B,uBAA1B,CANM,CAOZ,SAAY,CAAC,CAAD,CAAI,EAAJ,CAAQ,EAAR,CAPA,CAUdA,GAAAg4C,SAAA,CAAmBh4C,EAAArJ,OACnBqJ,GAAAi4C,MAAA,CAAgBj4C,EAAAk4C,MAAhB,CAAgCl4C,EAAAm4C,SAAhC,CAAmDn4C,EAAAo4C,QAAnD,CAAqEp4C,EAAAq4C,MACrEr4C,GAAAs4C,GAAA,CAAat4C,EAAAu4C,GA2Tb,KAAI9mD,GAAkBa,CAAAoW,UAAlBjX,CAAqC,CACvC+mD,MAAOA,QAAQ,CAAC3sD,CAAD,CAAK,CAGlB4sD,QAASA,EAAO,EAAG,CACbC,CAAJ,GACAA,CACA,CADQ,CAAA,CACR,CAAA7sD,CAAA,EAFA,CADiB,CAFnB,IAAI6sD,EAAQ,CAAA,CASgB,WAA5B,GAAIxzD,CAAA8e,WAAJ,CACEC,UAAA,CAAWw0C,CAAX,CADF,EAGE,IAAAjnD,GAAA,CAAQ,kBAAR,CAA4BinD,CAA5B,CAGA,CAAAnmD,CAAA,CAAOrN,CAAP,CAAAuM,GAAA,CAAkB,MAAlB,CAA0BinD,CAA1B,CANF,CAVkB,CADmB,CAqBvCjwD,SAAUA,QAAQ,EAAG,CACnB,IAAI5B,EAAQ,EACZf,EAAA,CAAQ,IAAR,CAAc,QAAQ,CAACiH,CAAD,CAAI,CAAElG,CAAAyD,KAAA,CAAW,EAAX,CAAgByC,CAAhB,CAAF,CAA1B,CACA,OAAO,GAAP,CAAalG,CAAAiH,KAAA,CAAW,IAAX,CAAb,CAAgC,GAHb,CArBkB,CA2BvCuyC,GAAIA,QAAQ,CAACx2C,CAAD,CAAQ,CAChB,MAAiB,EAAV;AAACA,CAAD,CAAe+C,CAAA,CAAO,IAAA,CAAK/C,CAAL,CAAP,CAAf,CAAqC+C,CAAA,CAAO,IAAA,CAAK,IAAAnH,OAAL,CAAmBoE,CAAnB,CAAP,CAD5B,CA3BmB,CA+BvCpE,OAAQ,CA/B+B,CAgCvC6E,KAAMA,EAhCiC,CAiCvC7D,KAAM,EAAAA,KAjCiC,CAkCvCsD,OAAQ,EAAAA,OAlC+B,CAAzC,CA0CIsa,GAAe,EACnBve,EAAA,CAAQ,2DAAA,MAAA,CAAA,GAAA,CAAR,CAAgF,QAAQ,CAACe,CAAD,CAAQ,CAC9Fwd,EAAA,CAAa3a,CAAA,CAAU7C,CAAV,CAAb,CAAA,CAAiCA,CAD6D,CAAhG,CAGA,KAAIyd,GAAmB,EACvBxe,EAAA,CAAQ,kDAAA,MAAA,CAAA,GAAA,CAAR,CAAuE,QAAQ,CAACe,CAAD,CAAQ,CACrFyd,EAAA,CAAiBzd,CAAjB,CAAA,CAA0B,CAAA,CAD2D,CAAvF,CAGA,KAAI2d,GAAe,CACjB,YAAe,WADE,CAEjB,YAAe,WAFE,CAGjB,MAAS,KAHQ,CAIjB,MAAS,KAJQ,CAKjB,UAAa,SALI,CAqBnB1e,EAAA,CAAQ,CACNkK,KAAMqS,EADA,CAENu2C,WAAYx3C,EAFN,CAAR,CAGG,QAAQ,CAACtV,CAAD,CAAK6C,CAAL,CAAW,CACpB4D,CAAA,CAAO5D,CAAP,CAAA,CAAe7C,CADK,CAHtB,CAOAhG,EAAA,CAAQ,CACNkK,KAAMqS,EADA,CAENxQ,cAAeuR,EAFT,CAINvT,MAAOA,QAAQ,CAACpG,CAAD,CAAU,CAEvB,MAAOmD,EAAAoD,KAAA,CAAYvG,CAAZ,CAAqB,QAArB,CAAP;AAAyC2Z,EAAA,CAAoB3Z,CAAA8Z,WAApB,EAA0C9Z,CAA1C,CAAmD,CAAC,eAAD,CAAkB,QAAlB,CAAnD,CAFlB,CAJnB,CASNkI,aAAcA,QAAQ,CAAClI,CAAD,CAAU,CAE9B,MAAOmD,EAAAoD,KAAA,CAAYvG,CAAZ,CAAqB,eAArB,CAAP,EAAgDmD,CAAAoD,KAAA,CAAYvG,CAAZ,CAAqB,yBAArB,CAFlB,CAT1B,CAcNmI,WAAYuR,EAdN,CAgBN/T,SAAUA,QAAQ,CAAC3F,CAAD,CAAU,CAC1B,MAAO2Z,GAAA,CAAoB3Z,CAApB,CAA6B,WAA7B,CADmB,CAhBtB,CAoBN44B,WAAYA,QAAQ,CAAC54B,CAAD,CAAUkF,CAAV,CAAgB,CAClClF,CAAAovD,gBAAA,CAAwBlqD,CAAxB,CADkC,CApB9B,CAwBN+W,SAAUjD,EAxBJ,CA0BNq2C,IAAKA,QAAQ,CAACrvD,CAAD,CAAUkF,CAAV,CAAgB9H,CAAhB,CAAuB,CAClC8H,CAAA,CAAOoQ,EAAA,CAAUpQ,CAAV,CAEP,IAAItG,CAAA,CAAUxB,CAAV,CAAJ,CACE4C,CAAAiN,MAAA,CAAc/H,CAAd,CAAA,CAAsB9H,CADxB,KAGE,OAAO4C,EAAAiN,MAAA,CAAc/H,CAAd,CANyB,CA1B9B,CAoCNxF,KAAMA,QAAQ,CAACM,CAAD,CAAUkF,CAAV,CAAgB9H,CAAhB,CAAuB,CACnC,IAAIkyD,EAAiBrvD,CAAA,CAAUiF,CAAV,CACrB,IAAI0V,EAAA,CAAa00C,CAAb,CAAJ,CACE,GAAI1wD,CAAA,CAAUxB,CAAV,CAAJ,CACQA,CAAN,EACE4C,CAAA,CAAQkF,CAAR,CACA,CADgB,CAAA,CAChB,CAAAlF,CAAAoZ,aAAA,CAAqBlU,CAArB,CAA2BoqD,CAA3B,CAFF,GAIEtvD,CAAA,CAAQkF,CAAR,CACA,CADgB,CAAA,CAChB,CAAAlF,CAAAovD,gBAAA,CAAwBE,CAAxB,CALF,CADF,KASE,OAAQtvD,EAAA,CAAQkF,CAAR,CAAD,EACEqqD,CAACvvD,CAAAwtB,WAAAgiC,aAAA,CAAgCtqD,CAAhC,CAADqqD,EAA0ChxD,CAA1CgxD,WADF;AAEED,CAFF,CAGE3zD,CAbb,KAeO,IAAIiD,CAAA,CAAUxB,CAAV,CAAJ,CACL4C,CAAAoZ,aAAA,CAAqBlU,CAArB,CAA2B9H,CAA3B,CADK,KAEA,IAAI4C,CAAAoF,aAAJ,CAKL,MAFIqqD,EAEG,CAFGzvD,CAAAoF,aAAA,CAAqBF,CAArB,CAA2B,CAA3B,CAEH,CAAQ,IAAR,GAAAuqD,CAAA,CAAe9zD,CAAf,CAA2B8zD,CAxBD,CApC/B,CAgENhwD,KAAMA,QAAQ,CAACO,CAAD,CAAUkF,CAAV,CAAgB9H,CAAhB,CAAuB,CACnC,GAAIwB,CAAA,CAAUxB,CAAV,CAAJ,CACE4C,CAAA,CAAQkF,CAAR,CAAA,CAAgB9H,CADlB,KAGE,OAAO4C,EAAA,CAAQkF,CAAR,CAJ0B,CAhE/B,CAwENqwB,KAAO,QAAQ,EAAG,CAIhBm6B,QAASA,EAAO,CAAC1vD,CAAD,CAAU5C,CAAV,CAAiB,CAC/B,GAAIuB,CAAA,CAAYvB,CAAZ,CAAJ,CAAwB,CACtB,IAAInB,EAAW+D,CAAA/D,SACf,OAAQA,EAAD,GAAcC,EAAd,EAAmCD,CAAnC,GAAgDyH,EAAhD,CAAkE1D,CAAA+W,YAAlE,CAAwF,EAFzE,CAIxB/W,CAAA+W,YAAA,CAAsB3Z,CALS,CAHjCsyD,CAAAC,IAAA,CAAc,EACd,OAAOD,EAFS,CAAZ,EAxEA,CAqFNhtD,IAAKA,QAAQ,CAAC1C,CAAD,CAAU5C,CAAV,CAAiB,CAC5B,GAAIuB,CAAA,CAAYvB,CAAZ,CAAJ,CAAwB,CACtB,GAAI4C,CAAA4vD,SAAJ,EAA+C,QAA/C,GAAwB7vD,EAAA,CAAUC,CAAV,CAAxB,CAAyD,CACvD,IAAIc,EAAS,EACbzE,EAAA,CAAQ2D,CAAAimB,QAAR,CAAyB,QAAQ,CAAC9Y,CAAD,CAAS,CACpCA,CAAA0iD,SAAJ,EACE/uD,CAAAD,KAAA,CAAYsM,CAAA/P,MAAZ,EAA4B+P,CAAAooB,KAA5B,CAFsC,CAA1C,CAKA,OAAyB,EAAlB,GAAAz0B,CAAA9E,OAAA,CAAsB,IAAtB,CAA6B8E,CAPmB,CASzD,MAAOd,EAAA5C,MAVe,CAYxB4C,CAAA5C,MAAA,CAAgBA,CAbY,CArFxB,CAqGNqG,KAAMA,QAAQ,CAACzD,CAAD,CAAU5C,CAAV,CAAiB,CAC7B,GAAIuB,CAAA,CAAYvB,CAAZ,CAAJ,CACE,MAAO4C,EAAA0W,UAETe;EAAA,CAAazX,CAAb,CAAsB,CAAA,CAAtB,CACAA,EAAA0W,UAAA,CAAoBtZ,CALS,CArGzB,CA6GNiG,MAAO4W,EA7GD,CAAR,CA8GG,QAAQ,CAAC5X,CAAD,CAAK6C,CAAL,CAAW,CAIpB4D,CAAAoW,UAAA,CAAiBha,CAAjB,CAAA,CAAyB,QAAQ,CAACknC,CAAD,CAAOC,CAAP,CAAa,CAAA,IACxCpvC,CADwC,CACrCT,CADqC,CAExCszD,EAAY,IAAA9zD,OAKhB,IAAIqG,CAAJ,GAAW4X,EAAX,GACoB,CAAd,EAAC5X,CAAArG,OAAD,EAAoBqG,CAApB,GAA2B2W,EAA3B,EAA6C3W,CAA7C,GAAoDqX,EAApD,CAAyE0yB,CAAzE,CAAgFC,CADtF,IACgG1wC,CADhG,CAC4G,CAC1G,GAAIkD,CAAA,CAASutC,CAAT,CAAJ,CAAoB,CAGlB,IAAKnvC,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgB6yD,CAAhB,CAA2B7yD,CAAA,EAA3B,CACE,GAAIoF,CAAJ,GAAWuW,EAAX,CAEEvW,CAAA,CAAG,IAAA,CAAKpF,CAAL,CAAH,CAAYmvC,CAAZ,CAFF,KAIE,KAAK5vC,CAAL,GAAY4vC,EAAZ,CACE/pC,CAAA,CAAG,IAAA,CAAKpF,CAAL,CAAH,CAAYT,CAAZ,CAAiB4vC,CAAA,CAAK5vC,CAAL,CAAjB,CAKN,OAAO,KAdW,CAkBdY,CAAAA,CAAQiF,CAAAstD,IAER5xD,EAAAA,CAAMX,CAAD,GAAWzB,CAAX,CAAwB+3B,IAAAyuB,IAAA,CAAS2N,CAAT,CAAoB,CAApB,CAAxB,CAAiDA,CAC1D,KAAShyD,CAAT,CAAa,CAAb,CAAgBA,CAAhB,CAAoBC,CAApB,CAAwBD,CAAA,EAAxB,CAA6B,CAC3B,IAAIssB,EAAY/nB,CAAA,CAAG,IAAA,CAAKvE,CAAL,CAAH,CAAYsuC,CAAZ,CAAkBC,CAAlB,CAChBjvC,EAAA,CAAQA,CAAA,CAAQA,CAAR,CAAgBgtB,CAAhB,CAA4BA,CAFT,CAI7B,MAAOhtB,EA1BiG,CA8B1G,IAAKH,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgB6yD,CAAhB,CAA2B7yD,CAAA,EAA3B,CACEoF,CAAA,CAAG,IAAA,CAAKpF,CAAL,CAAH,CAAYmvC,CAAZ,CAAkBC,CAAlB,CAGF,OAAO,KA1CmC,CAJ1B,CA9GtB,CAuNAhwC,EAAA,CAAQ,CACN8yD,WAAYx3C,EADN,CAGN3P,GAAI+nD,QAASA,EAAQ,CAAC/vD,CAAD,CAAUgY,CAAV,CAAgB3V,CAAhB,CAAoB4V,CAApB,CAAiC,CACpD,GAAIrZ,CAAA,CAAUqZ,CAAV,CAAJ,CAA4B,KAAMd,GAAA,CAAa,QAAb,CAAN,CAG5B,GAAKvB,EAAA,CAAkB5V,CAAlB,CAAL,CAAA,CAIA,IAAIkY,EAAeC,EAAA,CAAmBnY,CAAnB,CAA4B,CAAA,CAA5B,CACfwI,EAAAA,CAAS0P,CAAA1P,OACb,KAAI4P,EAASF,CAAAE,OAERA,EAAL,GACEA,CADF;AACWF,CAAAE,OADX,CACiC4C,EAAA,CAAmBhb,CAAnB,CAA4BwI,CAA5B,CADjC,CAQA,KAHIwnD,IAAAA,EAA6B,CAArB,EAAAh4C,CAAA3X,QAAA,CAAa,GAAb,CAAA,CAAyB2X,CAAAlY,MAAA,CAAW,GAAX,CAAzB,CAA2C,CAACkY,CAAD,CAAnDg4C,CACA/yD,EAAI+yD,CAAAh0D,OAER,CAAOiB,CAAA,EAAP,CAAA,CAAY,CACV+a,CAAA,CAAOg4C,CAAA,CAAM/yD,CAAN,CACP,KAAIqe,EAAW9S,CAAA,CAAOwP,CAAP,CAEVsD,EAAL,GACE9S,CAAA,CAAOwP,CAAP,CAqBA,CArBe,EAqBf,CAnBa,YAAb,GAAIA,CAAJ,EAAsC,YAAtC,GAA6BA,CAA7B,CAKE+3C,CAAA,CAAS/vD,CAAT,CAAkBquD,EAAA,CAAgBr2C,CAAhB,CAAlB,CAAyC,QAAQ,CAACkD,CAAD,CAAQ,CACvD,IAAmB+0C,EAAU/0C,CAAAg1C,cAGxBD,EAAL,GAAiBA,CAAjB,GAHaplB,IAGb,EAHaA,IAG2BslB,SAAA,CAAgBF,CAAhB,CAAxC,GACE73C,CAAA,CAAO8C,CAAP,CAAclD,CAAd,CALqD,CAAzD,CALF,CAee,UAff,GAeMA,CAfN,EAgBuBhY,CAlsBzBwgC,iBAAA,CAksBkCxoB,CAlsBlC,CAksBwCI,CAlsBxC,CAAmC,CAAA,CAAnC,CAqsBE,CAAAkD,CAAA,CAAW9S,CAAA,CAAOwP,CAAP,CAtBb,CAwBAsD,EAAAza,KAAA,CAAcwB,CAAd,CA5BU,CAhBZ,CAJoD,CAHhD,CAuDN+tD,IAAKr4C,EAvDC,CAyDNs4C,IAAKA,QAAQ,CAACrwD,CAAD,CAAUgY,CAAV,CAAgB3V,CAAhB,CAAoB,CAC/BrC,CAAA,CAAUmD,CAAA,CAAOnD,CAAP,CAKVA,EAAAgI,GAAA,CAAWgQ,CAAX,CAAiBs4C,QAASA,EAAI,EAAG,CAC/BtwD,CAAAowD,IAAA,CAAYp4C,CAAZ,CAAkB3V,CAAlB,CACArC,EAAAowD,IAAA,CAAYp4C,CAAZ,CAAkBs4C,CAAlB,CAF+B,CAAjC,CAIAtwD,EAAAgI,GAAA,CAAWgQ,CAAX,CAAiB3V,CAAjB,CAV+B,CAzD3B,CAsENywB,YAAaA,QAAQ,CAAC9yB,CAAD,CAAUuwD,CAAV,CAAuB,CAAA,IACtCnwD,CADsC,CAC/BhC,EAAS4B,CAAA8Z,WACpBrC,GAAA,CAAazX,CAAb,CACA3D,EAAA,CAAQ,IAAIyM,CAAJ,CAAWynD,CAAX,CAAR,CAAiC,QAAQ,CAAChxD,CAAD,CAAO,CAC1Ca,CAAJ,CACEhC,CAAAoyD,aAAA,CAAoBjxD,CAApB,CAA0Ba,CAAA2J,YAA1B,CADF,CAGE3L,CAAA+4B,aAAA,CAAoB53B,CAApB;AAA0BS,CAA1B,CAEFI,EAAA,CAAQb,CANsC,CAAhD,CAH0C,CAtEtC,CAmFNmtC,SAAUA,QAAQ,CAAC1sC,CAAD,CAAU,CAC1B,IAAI0sC,EAAW,EACfrwC,EAAA,CAAQ2D,CAAA6W,WAAR,CAA4B,QAAQ,CAAC7W,CAAD,CAAU,CACxCA,CAAA/D,SAAJ,GAAyBC,EAAzB,EACEwwC,CAAA7rC,KAAA,CAAcb,CAAd,CAF0C,CAA9C,CAIA,OAAO0sC,EANmB,CAnFtB,CA4FN1Z,SAAUA,QAAQ,CAAChzB,CAAD,CAAU,CAC1B,MAAOA,EAAAywD,gBAAP,EAAkCzwD,CAAA6W,WAAlC,EAAwD,EAD9B,CA5FtB,CAgGNrT,OAAQA,QAAQ,CAACxD,CAAD,CAAUT,CAAV,CAAgB,CAC9B,IAAItD,EAAW+D,CAAA/D,SACf,IAAIA,CAAJ,GAAiBC,EAAjB,EAz7C8B6d,EAy7C9B,GAAsC9d,CAAtC,CAAA,CAEAsD,CAAA,CAAO,IAAIuJ,CAAJ,CAAWvJ,CAAX,CAEP,KAAStC,IAAAA,EAAI,CAAJA,CAAOW,EAAK2B,CAAAvD,OAArB,CAAkCiB,CAAlC,CAAsCW,CAAtC,CAA0CX,CAAA,EAA1C,CAEE+C,CAAAmW,YAAA,CADY5W,CAAAi3C,CAAKv5C,CAALu5C,CACZ,CANF,CAF8B,CAhG1B,CA4GNka,QAASA,QAAQ,CAAC1wD,CAAD,CAAUT,CAAV,CAAgB,CAC/B,GAAIS,CAAA/D,SAAJ,GAAyBC,EAAzB,CAA4C,CAC1C,IAAIkE,EAAQJ,CAAA8W,WACZza,EAAA,CAAQ,IAAIyM,CAAJ,CAAWvJ,CAAX,CAAR,CAA0B,QAAQ,CAACi3C,CAAD,CAAQ,CACxCx2C,CAAAwwD,aAAA,CAAqBha,CAArB,CAA4Bp2C,CAA5B,CADwC,CAA1C,CAF0C,CADb,CA5G3B,CAqHNmW,KAAMA,QAAQ,CAACvW,CAAD,CAAU2wD,CAAV,CAAoB,CAChCA,CAAA,CAAWxtD,CAAA,CAAOwtD,CAAP,CAAA/Z,GAAA,CAAoB,CAApB,CAAAxzC,MAAA,EAAA,CAA+B,CAA/B,CACX,KAAIhF,EAAS4B,CAAA8Z,WACT1b,EAAJ,EACEA,CAAA+4B,aAAA,CAAoBw5B,CAApB,CAA8B3wD,CAA9B,CAEF2wD,EAAAx6C,YAAA,CAAqBnW,CAArB,CANgC,CArH5B;AA8HNonB,OAAQjN,EA9HF,CAgINy2C,OAAQA,QAAQ,CAAC5wD,CAAD,CAAU,CACxBma,EAAA,CAAana,CAAb,CAAsB,CAAA,CAAtB,CADwB,CAhIpB,CAoIN6wD,MAAOA,QAAQ,CAAC7wD,CAAD,CAAU8wD,CAAV,CAAsB,CAAA,IAC/B1wD,EAAQJ,CADuB,CACd5B,EAAS4B,CAAA8Z,WAC9Bg3C,EAAA,CAAa,IAAIhoD,CAAJ,CAAWgoD,CAAX,CAEb,KAJmC,IAI1B7zD,EAAI,CAJsB,CAInBW,EAAKkzD,CAAA90D,OAArB,CAAwCiB,CAAxC,CAA4CW,CAA5C,CAAgDX,CAAA,EAAhD,CAAqD,CACnD,IAAIsC,EAAOuxD,CAAA,CAAW7zD,CAAX,CACXmB,EAAAoyD,aAAA,CAAoBjxD,CAApB,CAA0Ba,CAAA2J,YAA1B,CACA3J,EAAA,CAAQb,CAH2C,CAJlB,CApI/B,CA+IN4c,SAAU7C,EA/IJ,CAgJN8C,YAAalD,EAhJP,CAkJN63C,YAAaA,QAAQ,CAAC/wD,CAAD,CAAUiZ,CAAV,CAAoB+3C,CAApB,CAA+B,CAC9C/3C,CAAJ,EACE5c,CAAA,CAAQ4c,CAAAnZ,MAAA,CAAe,GAAf,CAAR,CAA6B,QAAQ,CAACgqB,CAAD,CAAY,CAC/C,IAAImnC,EAAiBD,CACjBryD,EAAA,CAAYsyD,CAAZ,CAAJ,GACEA,CADF,CACmB,CAACj4C,EAAA,CAAehZ,CAAf,CAAwB8pB,CAAxB,CADpB,CAGA,EAACmnC,CAAA,CAAiB33C,EAAjB,CAAkCJ,EAAnC,EAAsDlZ,CAAtD,CAA+D8pB,CAA/D,CAL+C,CAAjD,CAFgD,CAlJ9C,CA8JN1rB,OAAQA,QAAQ,CAAC4B,CAAD,CAAU,CAExB,MAAO,CADH5B,CACG,CADM4B,CAAA8Z,WACN,GAv/CuBC,EAu/CvB,GAAU3b,CAAAnC,SAAV,CAA4DmC,CAA5D,CAAqE,IAFpD,CA9JpB,CAmKN+6C,KAAMA,QAAQ,CAACn5C,CAAD,CAAU,CACtB,MAAOA,EAAAkxD,mBADe,CAnKlB,CAuKNvxD,KAAMA,QAAQ,CAACK,CAAD,CAAUiZ,CAAV,CAAoB,CAChC,MAAIjZ,EAAAmxD,qBAAJ,CACSnxD,CAAAmxD,qBAAA,CAA6Bl4C,CAA7B,CADT,CAGS,EAJuB,CAvK5B,CA+KN7V,MAAOmU,EA/KD;AAiLN1O,eAAgBA,QAAQ,CAAC7I,CAAD,CAAUkb,CAAV,CAAiBk2C,CAAjB,CAAkC,CAAA,IAEpDC,CAFoD,CAE1BC,CAF0B,CAGpDjY,EAAYn+B,CAAAlD,KAAZqhC,EAA0Bn+B,CAH0B,CAIpDhD,EAAeC,EAAA,CAAmBnY,CAAnB,CAInB,IAFIsb,CAEJ,EAHI9S,CAGJ,CAHa0P,CAGb,EAH6BA,CAAA1P,OAG7B,GAFyBA,CAAA,CAAO6wC,CAAP,CAEzB,CAEEgY,CAmBA,CAnBa,CACXtmB,eAAgBA,QAAQ,EAAG,CAAE,IAAA1vB,iBAAA,CAAwB,CAAA,CAA1B,CADhB,CAEXF,mBAAoBA,QAAQ,EAAG,CAAE,MAAiC,CAAA,CAAjC,GAAO,IAAAE,iBAAT,CAFpB,CAGXK,yBAA0BA,QAAQ,EAAG,CAAE,IAAAF,4BAAA,CAAmC,CAAA,CAArC,CAH1B,CAIXK,8BAA+BA,QAAQ,EAAG,CAAE,MAA4C,CAAA,CAA5C,GAAO,IAAAL,4BAAT,CAJ/B,CAKXI,gBAAiBrd,CALN,CAMXyZ,KAAMqhC,CANK,CAOXxO,OAAQ7qC,CAPG,CAmBb,CARIkb,CAAAlD,KAQJ,GAPEq5C,CAOF,CAPe3zD,CAAA,CAAO2zD,CAAP,CAAmBn2C,CAAnB,CAOf,EAHAq2C,CAGA,CAHejwD,EAAA,CAAYga,CAAZ,CAGf,CAFAg2C,CAEA,CAFcF,CAAA,CAAkB,CAACC,CAAD,CAAAtvD,OAAA,CAAoBqvD,CAApB,CAAlB,CAAyD,CAACC,CAAD,CAEvE,CAAAh1D,CAAA,CAAQk1D,CAAR,CAAsB,QAAQ,CAAClvD,CAAD,CAAK,CAC5BgvD,CAAAx1C,8BAAA,EAAL,EACExZ,CAAAG,MAAA,CAASxC,CAAT;AAAkBsxD,CAAlB,CAF+B,CAAnC,CA7BsD,CAjLpD,CAAR,CAqNG,QAAQ,CAACjvD,CAAD,CAAK6C,CAAL,CAAW,CAIpB4D,CAAAoW,UAAA,CAAiBha,CAAjB,CAAA,CAAyB,QAAQ,CAACknC,CAAD,CAAOC,CAAP,CAAamlB,CAAb,CAAmB,CAGlD,IAFA,IAAIp0D,CAAJ,CAESH,EAAI,CAFb,CAEgBW,EAAK,IAAA5B,OAArB,CAAkCiB,CAAlC,CAAsCW,CAAtC,CAA0CX,CAAA,EAA1C,CACM0B,CAAA,CAAYvB,CAAZ,CAAJ,EACEA,CACA,CADQiF,CAAA,CAAG,IAAA,CAAKpF,CAAL,CAAH,CAAYmvC,CAAZ,CAAkBC,CAAlB,CAAwBmlB,CAAxB,CACR,CAAI5yD,CAAA,CAAUxB,CAAV,CAAJ,GAEEA,CAFF,CAEU+F,CAAA,CAAO/F,CAAP,CAFV,CAFF,EAOEka,EAAA,CAAela,CAAf,CAAsBiF,CAAA,CAAG,IAAA,CAAKpF,CAAL,CAAH,CAAYmvC,CAAZ,CAAkBC,CAAlB,CAAwBmlB,CAAxB,CAAtB,CAGJ,OAAO5yD,EAAA,CAAUxB,CAAV,CAAA,CAAmBA,CAAnB,CAA2B,IAdgB,CAkBpD0L,EAAAoW,UAAA/c,KAAA,CAAwB2G,CAAAoW,UAAAlX,GACxBc,EAAAoW,UAAAuyC,OAAA,CAA0B3oD,CAAAoW,UAAAkxC,IAvBN,CArNtB,CAgTA5zC,GAAA0C,UAAA,CAAoB,CAMlBvC,IAAKA,QAAQ,CAACngB,CAAD,CAAMY,CAAN,CAAa,CACxB,IAAA,CAAKif,EAAA,CAAQ7f,CAAR,CAAa,IAAAa,QAAb,CAAL,CAAA,CAAmCD,CADX,CANR,CAclBiK,IAAKA,QAAQ,CAAC7K,CAAD,CAAM,CACjB,MAAO,KAAA,CAAK6f,EAAA,CAAQ7f,CAAR,CAAa,IAAAa,QAAb,CAAL,CADU,CAdD,CAsBlB+pB,OAAQA,QAAQ,CAAC5qB,CAAD,CAAM,CACpB,IAAIY,EAAQ,IAAA,CAAKZ,CAAL,CAAW6f,EAAA,CAAQ7f,CAAR,CAAa,IAAAa,QAAb,CAAX,CACZ,QAAO,IAAA,CAAKb,CAAL,CACP,OAAOY,EAHa,CAtBJ,CA2FpB,KAAI4f,GAAU,oCAAd,CACI00C,GAAe,GADnB,CAEIC,GAAS,sBAFb;AAGI50C,GAAiB,kCAHrB,CAII3S,GAAkBxO,CAAA,CAAO,WAAP,CA6wBtBqK,GAAA8Y,WAAA,CAhwBAK,QAAiB,CAAC/c,CAAD,CAAKkD,CAAL,CAAeL,CAAf,CAAqB,CAAA,IAChC4Z,CAKJ,IAAkB,UAAlB,GAAI,MAAOzc,EAAX,CACE,IAAM,EAAAyc,CAAA,CAAUzc,CAAAyc,QAAV,CAAN,CAA6B,CAC3BA,CAAA,CAAU,EACV,IAAIzc,CAAArG,OAAJ,CAAe,CACb,GAAIuJ,CAAJ,CAIE,KAHKpJ,EAAA,CAAS+I,CAAT,CAGC,EAHkBA,CAGlB,GAFJA,CAEI,CAFG7C,CAAA6C,KAEH,EAFc0X,EAAA,CAAOva,CAAP,CAEd,EAAA+H,EAAA,CAAgB,UAAhB,CACyElF,CADzE,CAAN,CAGF4X,CAAA,CAASza,CAAArD,SAAA,EAAA2E,QAAA,CAAsBoZ,EAAtB,CAAsC,EAAtC,CACT60C,EAAA,CAAU90C,CAAA5b,MAAA,CAAa8b,EAAb,CACV3gB,EAAA,CAAQu1D,CAAA,CAAQ,CAAR,CAAA9xD,MAAA,CAAiB4xD,EAAjB,CAAR,CAAwC,QAAQ,CAAC1oD,CAAD,CAAM,CACpDA,CAAArF,QAAA,CAAYguD,EAAZ,CAAoB,QAAQ,CAAC/d,CAAD,CAAMie,CAAN,CAAkB3sD,CAAlB,CAAwB,CAClD4Z,CAAAje,KAAA,CAAaqE,CAAb,CADkD,CAApD,CADoD,CAAtD,CAVa,CAgBf7C,CAAAyc,QAAA,CAAaA,CAlBc,CAA7B,CADF,IAqBW1iB,EAAA,CAAQiG,CAAR,CAAJ,EACLs0C,CAEA,CAFOt0C,CAAArG,OAEP,CAFmB,CAEnB,CADAkN,EAAA,CAAY7G,CAAA,CAAGs0C,CAAH,CAAZ,CAAsB,IAAtB,CACA,CAAA73B,CAAA,CAAUzc,CAAAH,MAAA,CAAS,CAAT,CAAYy0C,CAAZ,CAHL,EAKLztC,EAAA,CAAY7G,CAAZ,CAAgB,IAAhB,CAAsB,CAAA,CAAtB,CAEF,OAAOyc,EAlC6B,CA4gCtC,KAAIgzC,GAAiBl2D,CAAA,CAAO,UAAP,CAArB,CAeImW,GAAmB,CAAC,UAAD,CAAa,QAAQ,CAACjM,CAAD,CAAW,CAGrD,IAAAisD,YAAA,CAAmB,EAkCnB,KAAAl4B,SAAA,CAAgBC,QAAQ,CAAC50B,CAAD;AAAOiF,CAAP,CAAgB,CACtC,IAAI3N,EAAM0I,CAAN1I,CAAa,YACjB,IAAI0I,CAAJ,EAA8B,GAA9B,EAAYA,CAAA1D,OAAA,CAAY,CAAZ,CAAZ,CAAmC,KAAMswD,GAAA,CAAe,SAAf,CACoB5sD,CADpB,CAAN,CAEnC,IAAA6sD,YAAA,CAAiB7sD,CAAAof,OAAA,CAAY,CAAZ,CAAjB,CAAA,CAAmC9nB,CACnCsJ,EAAAqE,QAAA,CAAiB3N,CAAjB,CAAsB2N,CAAtB,CALsC,CAsBxC,KAAA6nD,gBAAA,CAAuBC,QAAQ,CAAC/3B,CAAD,CAAa,CACjB,CAAzB,GAAIr8B,SAAA7B,OAAJ,GACE,IAAAk2D,kBADF,CAC4Bh4B,CAAD,WAAuBj5B,OAAvB,CAAiCi5B,CAAjC,CAA8C,IADzE,CAGA,OAAO,KAAAg4B,kBAJmC,CAO5C,KAAAn2C,KAAA,CAAY,CAAC,KAAD,CAAQ,iBAAR,CAA2B,YAA3B,CAAyC,QAAQ,CAACjI,CAAD,CAAMoB,CAAN,CAAuBxB,CAAvB,CAAmC,CAI9Fy+C,QAASA,EAAsB,CAAC9vD,CAAD,CAAK,CAAA,IAC9B+vD,CAD8B,CACpB5sC,EAAQ1R,CAAA0R,MAAA,EACtBA,EAAAiY,QAAA40B,WAAA,CAA2BC,QAA6B,EAAG,CACzDF,CAAA,EAAYA,CAAA,EAD6C,CAI3D1+C,EAAA+8B,aAAA,CAAwB8hB,QAA4B,EAAG,CACrDH,CAAA,CAAW/vD,CAAA,CAAGmwD,QAAgC,EAAG,CAC/ChtC,CAAAqZ,QAAA,EAD+C,CAAtC,CAD0C,CAAvD,CAMA,OAAOrZ,EAAAiY,QAZ2B,CAepCg1B,QAASA,EAAqB,CAACzyD,CAAD,CAAUkc,CAAV,CAAmB,CAAA,IAC3C4b,EAAQ,EADmC,CAC/BE,EAAW,EADoB,CAG3C06B,EAAa1oD,EAAA,EACjB3N;CAAA,CAAQyD,CAACE,CAAAN,KAAA,CAAa,OAAb,CAADI,EAA0B,EAA1BA,OAAA,CAAoC,KAApC,CAAR,CAAoD,QAAQ,CAACgqB,CAAD,CAAY,CACtE4oC,CAAA,CAAW5oC,CAAX,CAAA,CAAwB,CAAA,CAD8C,CAAxE,CAIAztB,EAAA,CAAQ6f,CAAR,CAAiB,QAAQ,CAACof,CAAD,CAASxR,CAAT,CAAoB,CAC3C,IAAI7N,EAAWy2C,CAAA,CAAW5oC,CAAX,CAMA,EAAA,CAAf,GAAIwR,CAAJ,EAAwBrf,CAAxB,CACE+b,CAAAn3B,KAAA,CAAcipB,CAAd,CADF,CAEsB,CAAA,CAFtB,GAEWwR,CAFX,EAE+Brf,CAF/B,EAGE6b,CAAAj3B,KAAA,CAAWipB,CAAX,CAVyC,CAA7C,CAcA,OAA0C,EAA1C,CAAQgO,CAAA97B,OAAR,CAAuBg8B,CAAAh8B,OAAvB,EACE,CAAC87B,CAAA97B,OAAA,CAAe87B,CAAf,CAAuB,IAAxB,CAA8BE,CAAAh8B,OAAA,CAAkBg8B,CAAlB,CAA6B,IAA3D,CAvB6C,CA0BjD26B,QAASA,EAAuB,CAACr0C,CAAD,CAAQpC,CAAR,CAAiB02C,CAAjB,CAAqB,CACnD,IADmD,IAC1C31D,EAAE,CADwC,CACrCW,EAAKse,CAAAlgB,OAAnB,CAAmCiB,CAAnC,CAAuCW,CAAvC,CAA2C,EAAEX,CAA7C,CAEEqhB,CAAA,CADgBpC,CAAA4N,CAAQ7sB,CAAR6sB,CAChB,CAAA,CAAmB8oC,CAH8B,CAOrDC,QAASA,EAAY,EAAG,CAEjBC,CAAL,GACEA,CACA,CADeh/C,CAAA0R,MAAA,EACf,CAAAtQ,CAAA,CAAgB,QAAQ,EAAG,CACzB49C,CAAAj0B,QAAA,EACAi0B,EAAA,CAAe,IAFU,CAA3B,CAFF,CAOA,OAAOA,EAAAr1B,QATe,CAYxBs1B,QAASA,EAAW,CAAC/yD,CAAD,CAAUimB,CAAV,CAAmB,CACrC,GAAItf,EAAA9H,SAAA,CAAiBonB,CAAjB,CAAJ,CAA+B,CAC7B,IAAI+sC,EAASt1D,CAAA,CAAOuoB,CAAAgtC,KAAP,EAAuB,EAAvB,CAA2BhtC,CAAAitC,GAA3B,EAAyC,EAAzC,CACblzD,EAAAqvD,IAAA,CAAY2D,CAAZ,CAF6B,CADM,CA9DvC,IAAIF,CAsFJ,OAAO,CACLK,QAASA,QAAQ,CAACnzD,CAAD,CAAUizD,CAAV,CAAgBC,CAAhB,CAAoB,CACnCH,CAAA,CAAY/yD,CAAZ,CAAqB,CAAEizD,KAAMA,CAAR,CAAcC,GAAIA,CAAlB,CAArB,CACA,OAAOL,EAAA,EAF4B,CADhC,CAsBLO,MAAOA,QAAQ,CAACpzD,CAAD,CAAU5B,CAAV,CAAkByyD,CAAlB,CAAyB5qC,CAAzB,CAAkC,CAC/C8sC,CAAA,CAAY/yD,CAAZ;AAAqBimB,CAArB,CACA4qC,EAAA,CAAQA,CAAAA,MAAA,CAAY7wD,CAAZ,CAAR,CACQ5B,CAAAsyD,QAAA,CAAe1wD,CAAf,CACR,OAAO6yD,EAAA,EAJwC,CAtB5C,CAwCLQ,MAAOA,QAAQ,CAACrzD,CAAD,CAAUimB,CAAV,CAAmB,CAChC8sC,CAAA,CAAY/yD,CAAZ,CAAqBimB,CAArB,CACAjmB,EAAAonB,OAAA,EACA,OAAOyrC,EAAA,EAHyB,CAxC7B,CAgELS,KAAMA,QAAQ,CAACtzD,CAAD,CAAU5B,CAAV,CAAkByyD,CAAlB,CAAyB5qC,CAAzB,CAAkC,CAG9C,MAAO,KAAAmtC,MAAA,CAAWpzD,CAAX,CAAoB5B,CAApB,CAA4ByyD,CAA5B,CAAmC5qC,CAAnC,CAHuC,CAhE3C,CAmFL9J,SAAUA,QAAQ,CAACnc,CAAD,CAAU8pB,CAAV,CAAqB7D,CAArB,CAA8B,CAC9C,MAAO,KAAAmiC,SAAA,CAAcpoD,CAAd,CAAuB8pB,CAAvB,CAAkC,EAAlC,CAAsC7D,CAAtC,CADuC,CAnF3C,CAuFLstC,sBAAuBA,QAAQ,CAACvzD,CAAD,CAAU8pB,CAAV,CAAqB7D,CAArB,CAA8B,CAC3DjmB,CAAA,CAAUmD,CAAA,CAAOnD,CAAP,CACV8pB,EAAA,CAAa3tB,CAAA,CAAS2tB,CAAT,CAAD,CAEMA,CAFN,CACO1tB,CAAA,CAAQ0tB,CAAR,CAAA,CAAqBA,CAAAzlB,KAAA,CAAe,GAAf,CAArB,CAA2C,EAE9DhI,EAAA,CAAQ2D,CAAR,CAAiB,QAAQ,CAACA,CAAD,CAAU,CACjCsZ,EAAA,CAAetZ,CAAf,CAAwB8pB,CAAxB,CADiC,CAAnC,CAGAipC,EAAA,CAAY/yD,CAAZ,CAAqBimB,CAArB,CACA,OAAO4sC,EAAA,EAToD,CAvFxD,CAgHLz2C,YAAaA,QAAQ,CAACpc,CAAD,CAAU8pB,CAAV,CAAqB7D,CAArB,CAA8B,CACjD,MAAO,KAAAmiC,SAAA,CAAcpoD,CAAd,CAAuB,EAAvB,CAA2B8pB,CAA3B,CAAsC7D,CAAtC,CAD0C,CAhH9C,CAoHLutC,yBAA0BA,QAAQ,CAACxzD,CAAD,CAAU8pB,CAAV,CAAqB7D,CAArB,CAA8B,CAC9DjmB,CAAA,CAAUmD,CAAA,CAAOnD,CAAP,CACV8pB,EAAA,CAAa3tB,CAAA,CAAS2tB,CAAT,CAAD,CAEMA,CAFN,CACO1tB,CAAA,CAAQ0tB,CAAR,CAAA,CAAqBA,CAAAzlB,KAAA,CAAe,GAAf,CAArB,CAA2C,EAE9DhI,EAAA,CAAQ2D,CAAR,CAAiB,QAAQ,CAACA,CAAD,CAAU,CACjCkZ,EAAA,CAAkBlZ,CAAlB,CAA2B8pB,CAA3B,CADiC,CAAnC,CAGAipC,EAAA,CAAY/yD,CAAZ,CAAqBimB,CAArB,CACA,OAAO4sC,EAAA,EATuD,CApH3D,CA8ILzK,SAAUA,QAAQ,CAACpoD,CAAD;AAAUyzD,CAAV,CAAersC,CAAf,CAAuBnB,CAAvB,CAAgC,CAChD,IAAI7jB,EAAO,IAAX,CAEIsxD,EAAe,CAAA,CACnB1zD,EAAA,CAAUmD,CAAA,CAAOnD,CAAP,CAEV,KAAIse,EAAQte,CAAAuG,KAAA,CAJMotD,kBAIN,CACPr1C,EAAL,CAMW2H,CANX,EAMsB3H,CAAA2H,QANtB,GAOE3H,CAAA2H,QAPF,CAOkBtf,EAAAjJ,OAAA,CAAe4gB,CAAA2H,QAAf,EAAgC,EAAhC,CAAoCA,CAApC,CAPlB,GACE3H,CAIA,CAJQ,CACNpC,QAAS,EADH,CAEN+J,QAASA,CAFH,CAIR,CAAAytC,CAAA,CAAe,CAAA,CALjB,CAUIx3C,EAAAA,CAAUoC,CAAApC,QAEdu3C,EAAA,CAAMr3D,CAAA,CAAQq3D,CAAR,CAAA,CAAeA,CAAf,CAAqBA,CAAA3zD,MAAA,CAAU,GAAV,CAC3BsnB,EAAA,CAAShrB,CAAA,CAAQgrB,CAAR,CAAA,CAAkBA,CAAlB,CAA2BA,CAAAtnB,MAAA,CAAa,GAAb,CACpC6yD,EAAA,CAAwBz2C,CAAxB,CAAiCu3C,CAAjC,CAAsC,CAAA,CAAtC,CACAd,EAAA,CAAwBz2C,CAAxB,CAAiCkL,CAAjC,CAAyC,CAAA,CAAzC,CAEIssC,EAAJ,GACEp1C,CAAAmf,QAgBA,CAhBgB00B,CAAA,CAAuB,QAAQ,CAAC9zB,CAAD,CAAO,CACpD,IAAI/f,EAAQte,CAAAuG,KAAA,CAxBEotD,kBAwBF,CACZ3zD,EAAAmvD,WAAA,CAzBcwE,kBAyBd,CAKA,IAAIr1C,CAAJ,CAAW,CACT,IAAIpC,EAAUu2C,CAAA,CAAsBzyD,CAAtB,CAA+Bse,CAAApC,QAA/B,CACVA,EAAJ,EACE9Z,CAAAwxD,sBAAA,CAA2B5zD,CAA3B,CAAoCkc,CAAA,CAAQ,CAAR,CAApC,CAAgDA,CAAA,CAAQ,CAAR,CAAhD,CAA4DoC,CAAA2H,QAA5D,CAHO,CAOXoY,CAAA,EAdoD,CAAtC,CAgBhB,CAAAr+B,CAAAuG,KAAA,CAvCgBotD,kBAuChB,CAA0Br1C,CAA1B,CAjBF,CAoBA,OAAOA,EAAAmf,QA5CyC,CA9I7C,CA6LLm2B,sBAAuBA,QAAQ,CAAC5zD,CAAD,CAAUyzD,CAAV,CAAersC,CAAf,CAAuBnB,CAAvB,CAAgC,CAC7DwtC,CAAA,EAAO,IAAAF,sBAAA,CAA2BvzD,CAA3B;AAAoCyzD,CAApC,CACPrsC,EAAA,EAAU,IAAAosC,yBAAA,CAA8BxzD,CAA9B,CAAuConB,CAAvC,CACV2rC,EAAA,CAAY/yD,CAAZ,CAAqBimB,CAArB,CACA,OAAO4sC,EAAA,EAJsD,CA7L1D,CAoMLlpC,QAASprB,CApMJ,CAqMLqnB,OAAQrnB,CArMH,CAxFuF,CAApF,CAlEyC,CAAhC,CAfvB,CAk6DI0pB,GAAiBrsB,CAAA,CAAO,UAAP,CAQrByQ,GAAAyS,QAAA,CAA2B,CAAC,UAAD,CAAa,uBAAb,CAgxD3B,KAAI+O,GAAgB,uBAApB,CAsGIwM,GAAoBz+B,CAAA,CAAO,aAAP,CAtGxB,CA+UIi4D,GAAmB,kBA/UvB,CAgVIh4B,GAAgC,CAAC,eAAgBg4B,EAAhB,CAAmC,gBAApC,CAhVpC,CAiVI94B,GAAa,eAjVjB,CAkVIC,GAAY,CACd,IAAK,IADS,CAEd,IAAK,IAFS,CAlVhB,CAsVIJ,GAAyB,cAtV7B,CAgoDIyH,GAAqBzmC,CAAA,CAAO,cAAP,CAhoDzB,CAouEIk4D,GAAa,iCApuEjB,CAquEIltB,GAAgB,CAAC,KAAQ,EAAT,CAAa,MAAS,GAAtB,CAA2B,IAAO,EAAlC,CAruEpB,CAsuEIuB,GAAkBvsC,CAAA,CAAO,WAAP,CAtuEtB,CAgiFIm4D,GAAoB,CAMtBjsB,QAAS,CAAA,CANa,CAYtBwD,UAAW,CAAA,CAZW,CAiCtBlB,OAAQf,EAAA,CAAe,UAAf,CAjCc,CAwDtBvmB,IAAKA,QAAQ,CAACA,CAAD,CAAM,CACjB,GAAInkB,CAAA,CAAYmkB,CAAZ,CAAJ,CACE,MAAO,KAAAwlB,MAET;IAAIpnC,EAAQ4yD,EAAAx9C,KAAA,CAAgBwM,CAAhB,CACZ,EAAI5hB,CAAA,CAAM,CAAN,CAAJ,EAAwB,EAAxB,GAAgB4hB,CAAhB,GAA4B,IAAAvZ,KAAA,CAAU1F,kBAAA,CAAmB3C,CAAA,CAAM,CAAN,CAAnB,CAAV,CAC5B,EAAIA,CAAA,CAAM,CAAN,CAAJ,EAAgBA,CAAA,CAAM,CAAN,CAAhB,EAAoC,EAApC,GAA4B4hB,CAA5B,GAAwC,IAAAqkB,OAAA,CAAYjmC,CAAA,CAAM,CAAN,CAAZ,EAAwB,EAAxB,CACxC,KAAA+f,KAAA,CAAU/f,CAAA,CAAM,CAAN,CAAV,EAAsB,EAAtB,CAEA,OAAO,KATU,CAxDG,CAsFtBkgC,SAAUiI,EAAA,CAAe,YAAf,CAtFY,CA0GtBrvB,KAAMqvB,EAAA,CAAe,QAAf,CA1GgB,CA8HtB1C,KAAM0C,EAAA,CAAe,QAAf,CA9HgB,CAwJtB9/B,KAAMggC,EAAA,CAAqB,QAArB,CAA+B,QAAQ,CAAChgC,CAAD,CAAO,CAClDA,CAAA,CAAgB,IAAT,GAAAA,CAAA,CAAgBA,CAAAvK,SAAA,EAAhB,CAAkC,EACzC,OAAyB,GAAlB,EAAAuK,CAAA/H,OAAA,CAAY,CAAZ,CAAA,CAAwB+H,CAAxB,CAA+B,GAA/B,CAAqCA,CAFM,CAA9C,CAxJgB,CA0MtB49B,OAAQA,QAAQ,CAACA,CAAD,CAAS6sB,CAAT,CAAqB,CACnC,OAAQn2D,SAAA7B,OAAR,EACE,KAAK,CAAL,CACE,MAAO,KAAAkrC,SACT,MAAK,CAAL,CACE,GAAI/qC,CAAA,CAASgrC,CAAT,CAAJ,EAAwBroC,CAAA,CAASqoC,CAAT,CAAxB,CACEA,CACA,CADSA,CAAAnoC,SAAA,EACT,CAAA,IAAAkoC,SAAA,CAAgBpjC,EAAA,CAAcqjC,CAAd,CAFlB,KAGO,IAAItoC,CAAA,CAASsoC,CAAT,CAAJ,CACLA,CAMA,CANS5mC,EAAA,CAAK4mC,CAAL,CAAa,EAAb,CAMT,CAJA9qC,CAAA,CAAQ8qC,CAAR,CAAgB,QAAQ,CAAC/pC,CAAD,CAAQZ,CAAR,CAAa,CACtB,IAAb,EAAIY,CAAJ,EAAmB,OAAO+pC,CAAA,CAAO3qC,CAAP,CADS,CAArC,CAIA,CAAA,IAAA0qC,SAAA;AAAgBC,CAPX,KASL,MAAMgB,GAAA,CAAgB,UAAhB,CAAN,CAGF,KACF,SACMxpC,CAAA,CAAYq1D,CAAZ,CAAJ,EAA8C,IAA9C,GAA+BA,CAA/B,CACE,OAAO,IAAA9sB,SAAA,CAAcC,CAAd,CADT,CAGE,IAAAD,SAAA,CAAcC,CAAd,CAHF,CAG0B6sB,CAxB9B,CA4BA,IAAA5rB,UAAA,EACA,OAAO,KA9B4B,CA1Mf,CAgQtBnnB,KAAMsoB,EAAA,CAAqB,QAArB,CAA+B,QAAQ,CAACtoB,CAAD,CAAO,CAClD,MAAgB,KAAT,GAAAA,CAAA,CAAgBA,CAAAjiB,SAAA,EAAhB,CAAkC,EADS,CAA9C,CAhQgB,CA4QtB2E,QAASA,QAAQ,EAAG,CAClB,IAAA2nC,UAAA,CAAiB,CAAA,CACjB,OAAO,KAFW,CA5QE,CAkRxBjvC,EAAA,CAAQ,CAAC+sC,EAAD,CAA6BN,EAA7B,CAAkDnB,EAAlD,CAAR,CAA6E,QAAQ,CAACssB,CAAD,CAAW,CAC9FA,CAAA/0C,UAAA,CAAqBniB,MAAAuB,OAAA,CAAcy1D,EAAd,CAqBrBE,EAAA/0C,UAAAwD,MAAA,CAA2BwxC,QAAQ,CAACxxC,CAAD,CAAQ,CACzC,GAAK1mB,CAAA6B,SAAA7B,OAAL,CACE,MAAO,KAAAiuC,QAET,IAAIgqB,CAAJ,GAAiBtsB,EAAjB,EAAsCG,CAAA,IAAAA,QAAtC,CACE,KAAMK,GAAA,CAAgB,SAAhB,CAAN,CAMF,IAAA8B,QAAA,CAAetrC,CAAA,CAAY+jB,CAAZ,CAAA,CAAqB,IAArB,CAA4BA,CAE3C,OAAO,KAbkC,CAtBmD,CAAhG,CAmiBA,KAAI8pB,GAAe5wC,CAAA,CAAO,QAAP,CAAnB,CAgEIu4D,GAAOtlB,QAAA3vB,UAAAviB,KAhEX;AAiEIy3D,GAAQvlB,QAAA3vB,UAAA1c,MAjEZ,CAkEI6xD,GAAOxlB,QAAA3vB,UAAA/c,KAlEX,CAmFImyD,GAAYtqD,EAAA,EAChB3N,EAAA,CAAQ,CACN,OAAQk4D,QAAQ,EAAG,CAAE,MAAO,KAAT,CADb,CAEN,OAAQC,QAAQ,EAAG,CAAE,MAAO,CAAA,CAAT,CAFb,CAGN,QAASC,QAAQ,EAAG,CAAE,MAAO,CAAA,CAAT,CAHd,CAIN,UAAa94D,QAAQ,EAAG,EAJlB,CAAR,CAKG,QAAQ,CAAC+4D,CAAD,CAAiBxvD,CAAjB,CAAuB,CAChCwvD,CAAArpD,SAAA,CAA0BqpD,CAAAtjC,QAA1B,CAAmDsjC,CAAA5lB,aAAnD,CAAiF,CAAA,CACjFwlB,GAAA,CAAUpvD,CAAV,CAAA,CAAkBwvD,CAFc,CALlC,CAWAJ,GAAA,CAAU,MAAV,CAAA,CAAoB,QAAQ,CAAClyD,CAAD,CAAO,CAAE,MAAOA,EAAT,CACnCkyD,GAAA,CAAU,MAAV,CAAAxlB,aAAA,CAAiC,CAAA,CAIjC,KAAI6lB,GAAYj3D,CAAA,CAAOsM,EAAA,EAAP,CAAoB,CAChC,IAAI4qD,QAAQ,CAACxyD,CAAD,CAAOyc,CAAP,CAAevS,CAAf,CAAkB+kB,CAAlB,CAAqB,CAC/B/kB,CAAA,CAAEA,CAAA,CAAElK,CAAF,CAAQyc,CAAR,CAAiBwS,EAAA,CAAEA,CAAA,CAAEjvB,CAAF,CAAQyc,CAAR,CACrB,OAAIjgB,EAAA,CAAU0N,CAAV,CAAJ,CACM1N,CAAA,CAAUyyB,CAAV,CAAJ,CACS/kB,CADT,CACa+kB,CADb,CAGO/kB,CAJT,CAMO1N,CAAA,CAAUyyB,CAAV,CAAA,CAAeA,CAAf,CAAmB11B,CARK,CADD,CAUhC,IAAIk5D,QAAQ,CAACzyD,CAAD,CAAOyc,CAAP,CAAevS,CAAf,CAAkB+kB,CAAlB,CAAqB,CAC3B/kB,CAAA,CAAEA,CAAA,CAAElK,CAAF,CAAQyc,CAAR,CAAiBwS,EAAA,CAAEA,CAAA,CAAEjvB,CAAF,CAAQyc,CAAR,CACrB,QAAQjgB,CAAA,CAAU0N,CAAV,CAAA,CAAeA,CAAf,CAAmB,CAA3B,GAAiC1N,CAAA,CAAUyyB,CAAV,CAAA,CAAeA,CAAf,CAAmB,CAApD,CAF2B,CAVD,CAchC,IAAIyjC,QAAQ,CAAC1yD,CAAD,CAAOyc,CAAP,CAAevS,CAAf,CAAkB+kB,CAAlB,CAAqB,CAAC,MAAO/kB,EAAA,CAAElK,CAAF,CAAQyc,CAAR,CAAP,CAAyBwS,CAAA,CAAEjvB,CAAF,CAAQyc,CAAR,CAA1B,CAdD;AAehC,IAAIk2C,QAAQ,CAAC3yD,CAAD,CAAOyc,CAAP,CAAevS,CAAf,CAAkB+kB,CAAlB,CAAqB,CAAC,MAAO/kB,EAAA,CAAElK,CAAF,CAAQyc,CAAR,CAAP,CAAyBwS,CAAA,CAAEjvB,CAAF,CAAQyc,CAAR,CAA1B,CAfD,CAgBhC,IAAIm2C,QAAQ,CAAC5yD,CAAD,CAAOyc,CAAP,CAAevS,CAAf,CAAkB+kB,CAAlB,CAAqB,CAAC,MAAO/kB,EAAA,CAAElK,CAAF,CAAQyc,CAAR,CAAP,CAAyBwS,CAAA,CAAEjvB,CAAF,CAAQyc,CAAR,CAA1B,CAhBD,CAiBhC,MAAMo2C,QAAQ,CAAC7yD,CAAD,CAAOyc,CAAP,CAAevS,CAAf,CAAkB+kB,CAAlB,CAAqB,CAAC,MAAO/kB,EAAA,CAAElK,CAAF,CAAQyc,CAAR,CAAP,GAA2BwS,CAAA,CAAEjvB,CAAF,CAAQyc,CAAR,CAA5B,CAjBH,CAkBhC,MAAMq2C,QAAQ,CAAC9yD,CAAD,CAAOyc,CAAP,CAAevS,CAAf,CAAkB+kB,CAAlB,CAAqB,CAAC,MAAO/kB,EAAA,CAAElK,CAAF,CAAQyc,CAAR,CAAP,GAA2BwS,CAAA,CAAEjvB,CAAF,CAAQyc,CAAR,CAA5B,CAlBH,CAmBhC,KAAKs2C,QAAQ,CAAC/yD,CAAD,CAAOyc,CAAP,CAAevS,CAAf,CAAkB+kB,CAAlB,CAAqB,CAAC,MAAO/kB,EAAA,CAAElK,CAAF,CAAQyc,CAAR,CAAP,EAA0BwS,CAAA,CAAEjvB,CAAF,CAAQyc,CAAR,CAA3B,CAnBF,CAoBhC,KAAKu2C,QAAQ,CAAChzD,CAAD,CAAOyc,CAAP,CAAevS,CAAf,CAAkB+kB,CAAlB,CAAqB,CAAC,MAAO/kB,EAAA,CAAElK,CAAF,CAAQyc,CAAR,CAAP,EAA0BwS,CAAA,CAAEjvB,CAAF,CAAQyc,CAAR,CAA3B,CApBF,CAqBhC,IAAIw2C,QAAQ,CAACjzD,CAAD,CAAOyc,CAAP,CAAevS,CAAf,CAAkB+kB,CAAlB,CAAqB,CAAC,MAAO/kB,EAAA,CAAElK,CAAF,CAAQyc,CAAR,CAAP,CAAyBwS,CAAA,CAAEjvB,CAAF,CAAQyc,CAAR,CAA1B,CArBD,CAsBhC,IAAIy2C,QAAQ,CAAClzD,CAAD,CAAOyc,CAAP,CAAevS,CAAf,CAAkB+kB,CAAlB,CAAqB,CAAC,MAAO/kB,EAAA,CAAElK,CAAF,CAAQyc,CAAR,CAAP,CAAyBwS,CAAA,CAAEjvB,CAAF,CAAQyc,CAAR,CAA1B,CAtBD,CAuBhC,KAAK02C,QAAQ,CAACnzD,CAAD,CAAOyc,CAAP,CAAevS,CAAf,CAAkB+kB,CAAlB,CAAqB,CAAC,MAAO/kB,EAAA,CAAElK,CAAF,CAAQyc,CAAR,CAAP,EAA0BwS,CAAA,CAAEjvB,CAAF,CAAQyc,CAAR,CAA3B,CAvBF,CAwBhC,KAAK22C,QAAQ,CAACpzD,CAAD,CAAOyc,CAAP,CAAevS,CAAf,CAAkB+kB,CAAlB,CAAqB,CAAC,MAAO/kB,EAAA,CAAElK,CAAF,CAAQyc,CAAR,CAAP,EAA0BwS,CAAA,CAAEjvB,CAAF,CAAQyc,CAAR,CAA3B,CAxBF,CAyBhC,KAAK42C,QAAQ,CAACrzD,CAAD,CAAOyc,CAAP,CAAevS,CAAf,CAAkB+kB,CAAlB,CAAqB,CAAC,MAAO/kB,EAAA,CAAElK,CAAF,CAAQyc,CAAR,CAAP,EAA0BwS,CAAA,CAAEjvB,CAAF,CAAQyc,CAAR,CAA3B,CAzBF;AA0BhC,KAAK62C,QAAQ,CAACtzD,CAAD,CAAOyc,CAAP,CAAevS,CAAf,CAAkB+kB,CAAlB,CAAqB,CAAC,MAAO/kB,EAAA,CAAElK,CAAF,CAAQyc,CAAR,CAAP,EAA0BwS,CAAA,CAAEjvB,CAAF,CAAQyc,CAAR,CAA3B,CA1BF,CA2BhC,IAAI82C,QAAQ,CAACvzD,CAAD,CAAOyc,CAAP,CAAevS,CAAf,CAAkB,CAAC,MAAO,CAACA,CAAA,CAAElK,CAAF,CAAQyc,CAAR,CAAT,CA3BE,CA8BhC,IAAI,CAAA,CA9B4B,CA+BhC,IAAI,CAAA,CA/B4B,CAApB,CAAhB,CAiCI+2C,GAAS,CAAC,EAAI,IAAL,CAAW,EAAI,IAAf,CAAqB,EAAI,IAAzB,CAA+B,EAAI,IAAnC,CAAyC,EAAI,IAA7C,CAAmD,IAAI,GAAvD,CAA4D,IAAI,GAAhE,CAjCb,CA0CIjkB,GAAQA,QAAQ,CAAC1rB,CAAD,CAAU,CAC5B,IAAAA,QAAA,CAAeA,CADa,CAI9B0rB,GAAAzyB,UAAA,CAAkB,CAChB9V,YAAauoC,EADG,CAGhBkkB,IAAKA,QAAQ,CAACtgC,CAAD,CAAO,CAClB,IAAAA,KAAA,CAAYA,CACZ,KAAAn1B,MAAA,CAAa,CAGb,KAFA,IAAA01D,OAEA,CAFc,EAEd,CAAO,IAAA11D,MAAP,CAAoB,IAAAm1B,KAAAv5B,OAApB,CAAA,CAEE,GADI4lC,CACA,CADK,IAAArM,KAAA/zB,OAAA,CAAiB,IAAApB,MAAjB,CACL,CAAO,GAAP,GAAAwhC,CAAA,EAAqB,GAArB,GAAcA,CAAlB,CACE,IAAAm0B,WAAA,CAAgBn0B,CAAhB,CADF,KAEO,IAAI,IAAA9iC,SAAA,CAAc8iC,CAAd,CAAJ,EAAgC,GAAhC,GAAyBA,CAAzB,EAAuC,IAAA9iC,SAAA,CAAc,IAAAk3D,KAAA,EAAd,CAAvC,CACL,IAAAC,WAAA,EADK,KAEA,IAAI,IAAAC,QAAA,CAAat0B,CAAb,CAAJ,CACL,IAAAu0B,UAAA,EADK,KAEA,IAAI,IAAAC,GAAA,CAAQx0B,CAAR;AAAY,aAAZ,CAAJ,CACL,IAAAk0B,OAAAj1D,KAAA,CAAiB,CAACT,MAAO,IAAAA,MAAR,CAAoBm1B,KAAMqM,CAA1B,CAAjB,CACA,CAAA,IAAAxhC,MAAA,EAFK,KAGA,IAAI,IAAAi2D,aAAA,CAAkBz0B,CAAlB,CAAJ,CACL,IAAAxhC,MAAA,EADK,KAEA,CACL,IAAIk2D,EAAM10B,CAAN00B,CAAW,IAAAN,KAAA,EAAf,CACIO,EAAMD,CAANC,CAAY,IAAAP,KAAA,CAAU,CAAV,CADhB,CAGIQ,EAAM7B,EAAA,CAAU2B,CAAV,CAHV,CAIIG,EAAM9B,EAAA,CAAU4B,CAAV,CAFA5B,GAAA+B,CAAU90B,CAAV80B,CAGV,EAAWF,CAAX,EAAkBC,CAAlB,EACMh9B,CAEJ,CAFYg9B,CAAA,CAAMF,CAAN,CAAaC,CAAA,CAAMF,CAAN,CAAY10B,CAErC,CADA,IAAAk0B,OAAAj1D,KAAA,CAAiB,CAACT,MAAO,IAAAA,MAAR,CAAoBm1B,KAAMkE,CAA1B,CAAiCk9B,SAAU,CAAA,CAA3C,CAAjB,CACA,CAAA,IAAAv2D,MAAA,EAAcq5B,CAAAz9B,OAHhB,EAKE,IAAA46D,WAAA,CAAgB,4BAAhB,CAA8C,IAAAx2D,MAA9C,CAA0D,IAAAA,MAA1D,CAAuE,CAAvE,CAXG,CAeT,MAAO,KAAA01D,OAjCW,CAHJ,CAuChBM,GAAIA,QAAQ,CAACx0B,CAAD,CAAKi1B,CAAL,CAAY,CACtB,MAA8B,EAA9B,GAAOA,CAAAx2D,QAAA,CAAcuhC,CAAd,CADe,CAvCR,CA2ChBo0B,KAAMA,QAAQ,CAAC/4D,CAAD,CAAI,CACZ+oC,CAAAA,CAAM/oC,CAAN+oC,EAAW,CACf,OAAQ,KAAA5lC,MAAD,CAAc4lC,CAAd,CAAoB,IAAAzQ,KAAAv5B,OAApB,CAAwC,IAAAu5B,KAAA/zB,OAAA,CAAiB,IAAApB,MAAjB,CAA8B4lC,CAA9B,CAAxC,CAA6E,CAAA,CAFpE,CA3CF;AAgDhBlnC,SAAUA,QAAQ,CAAC8iC,CAAD,CAAK,CACrB,MAAQ,GAAR,EAAeA,CAAf,EAA2B,GAA3B,EAAqBA,CAArB,EAAiD,QAAjD,GAAmC,MAAOA,EADrB,CAhDP,CAoDhBy0B,aAAcA,QAAQ,CAACz0B,CAAD,CAAK,CAEzB,MAAe,GAAf,GAAQA,CAAR,EAA6B,IAA7B,GAAsBA,CAAtB,EAA4C,IAA5C,GAAqCA,CAArC,EACe,IADf,GACQA,CADR,EAC8B,IAD9B,GACuBA,CADvB,EAC6C,QAD7C,GACsCA,CAHb,CApDX,CA0DhBs0B,QAASA,QAAQ,CAACt0B,CAAD,CAAK,CACpB,MAAQ,GAAR,EAAeA,CAAf,EAA2B,GAA3B,EAAqBA,CAArB,EACQ,GADR,EACeA,CADf,EAC2B,GAD3B,EACqBA,CADrB,EAEQ,GAFR,GAEgBA,CAFhB,EAE6B,GAF7B,GAEsBA,CAHF,CA1DN,CAgEhBk1B,cAAeA,QAAQ,CAACl1B,CAAD,CAAK,CAC1B,MAAe,GAAf,GAAQA,CAAR,EAA6B,GAA7B,GAAsBA,CAAtB,EAAoC,IAAA9iC,SAAA,CAAc8iC,CAAd,CADV,CAhEZ,CAoEhBg1B,WAAYA,QAAQ,CAAC70C,CAAD,CAAQg1C,CAAR,CAAeC,CAAf,CAAoB,CACtCA,CAAA,CAAMA,CAAN,EAAa,IAAA52D,MACT62D,EAAAA,CAAUr4D,CAAA,CAAUm4D,CAAV,CAAA,CACJ,IADI,CACGA,CADH,CACY,GADZ,CACkB,IAAA32D,MADlB,CAC+B,IAD/B,CACsC,IAAAm1B,KAAAhQ,UAAA,CAAoBwxC,CAApB,CAA2BC,CAA3B,CADtC,CACwE,GADxE,CAEJ,GAFI,CAEEA,CAChB,MAAMxqB,GAAA,CAAa,QAAb,CACFzqB,CADE,CACKk1C,CADL,CACa,IAAA1hC,KADb,CAAN,CALsC,CApExB,CA6EhB0gC,WAAYA,QAAQ,EAAG,CAGrB,IAFA,IAAI1U,EAAS,EAAb,CACIwV,EAAQ,IAAA32D,MACZ,CAAO,IAAAA,MAAP;AAAoB,IAAAm1B,KAAAv5B,OAApB,CAAA,CAAsC,CACpC,IAAI4lC,EAAK3hC,CAAA,CAAU,IAAAs1B,KAAA/zB,OAAA,CAAiB,IAAApB,MAAjB,CAAV,CACT,IAAU,GAAV,EAAIwhC,CAAJ,EAAiB,IAAA9iC,SAAA,CAAc8iC,CAAd,CAAjB,CACE2f,CAAA,EAAU3f,CADZ,KAEO,CACL,IAAIs1B,EAAS,IAAAlB,KAAA,EACb,IAAU,GAAV,EAAIp0B,CAAJ,EAAiB,IAAAk1B,cAAA,CAAmBI,CAAnB,CAAjB,CACE3V,CAAA,EAAU3f,CADZ,KAEO,IAAI,IAAAk1B,cAAA,CAAmBl1B,CAAnB,CAAJ,EACHs1B,CADG,EACO,IAAAp4D,SAAA,CAAco4D,CAAd,CADP,EAEiC,GAFjC,EAEH3V,CAAA//C,OAAA,CAAc+/C,CAAAvlD,OAAd,CAA8B,CAA9B,CAFG,CAGLulD,CAAA,EAAU3f,CAHL,KAIA,IAAI,CAAA,IAAAk1B,cAAA,CAAmBl1B,CAAnB,CAAJ,EACDs1B,CADC,EACU,IAAAp4D,SAAA,CAAco4D,CAAd,CADV,EAEiC,GAFjC,EAEH3V,CAAA//C,OAAA,CAAc+/C,CAAAvlD,OAAd,CAA8B,CAA9B,CAFG,CAKL,KALK,KAGL,KAAA46D,WAAA,CAAgB,kBAAhB,CAXG,CAgBP,IAAAx2D,MAAA,EApBoC,CAsBtC,IAAA01D,OAAAj1D,KAAA,CAAiB,CACfT,MAAO22D,CADQ,CAEfxhC,KAAMgsB,CAFS,CAGfl2C,SAAU,CAAA,CAHK,CAIfjO,MAAO4pB,MAAA,CAAOu6B,CAAP,CAJQ,CAAjB,CAzBqB,CA7EP,CA8GhB4U,UAAWA,QAAQ,EAAG,CAEpB,IADA,IAAIY,EAAQ,IAAA32D,MACZ,CAAO,IAAAA,MAAP,CAAoB,IAAAm1B,KAAAv5B,OAApB,CAAA,CAAsC,CACpC,IAAI4lC;AAAK,IAAArM,KAAA/zB,OAAA,CAAiB,IAAApB,MAAjB,CACT,IAAM,CAAA,IAAA81D,QAAA,CAAat0B,CAAb,CAAN,EAA0B,CAAA,IAAA9iC,SAAA,CAAc8iC,CAAd,CAA1B,CACE,KAEF,KAAAxhC,MAAA,EALoC,CAOtC,IAAA01D,OAAAj1D,KAAA,CAAiB,CACfT,MAAO22D,CADQ,CAEfxhC,KAAM,IAAAA,KAAArzB,MAAA,CAAgB60D,CAAhB,CAAuB,IAAA32D,MAAvB,CAFS,CAGfuwB,WAAY,CAAA,CAHG,CAAjB,CAToB,CA9GN,CA8HhBolC,WAAYA,QAAQ,CAACoB,CAAD,CAAQ,CAC1B,IAAIJ,EAAQ,IAAA32D,MACZ,KAAAA,MAAA,EAIA,KAHA,IAAIujD,EAAS,EAAb,CACIyT,EAAYD,CADhB,CAEIx1B,EAAS,CAAA,CACb,CAAO,IAAAvhC,MAAP,CAAoB,IAAAm1B,KAAAv5B,OAApB,CAAA,CAAsC,CACpC,IAAI4lC,EAAK,IAAArM,KAAA/zB,OAAA,CAAiB,IAAApB,MAAjB,CAAT,CACAg3D,EAAAA,CAAAA,CAAax1B,CACb,IAAID,CAAJ,CACa,GAAX,GAAIC,CAAJ,EACMy1B,CAIJ,CAJU,IAAA9hC,KAAAhQ,UAAA,CAAoB,IAAAnlB,MAApB,CAAiC,CAAjC,CAAoC,IAAAA,MAApC,CAAiD,CAAjD,CAIV,CAHKi3D,CAAAn2D,MAAA,CAAU,aAAV,CAGL,EAFE,IAAA01D,WAAA,CAAgB,6BAAhB,CAAgDS,CAAhD,CAAsD,GAAtD,CAEF,CADA,IAAAj3D,MACA,EADc,CACd,CAAAujD,CAAA,EAAU2T,MAAAC,aAAA,CAAoBr5D,QAAA,CAASm5D,CAAT,CAAc,EAAd,CAApB,CALZ;AAQE1T,CARF,EAOYiS,EAAA4B,CAAO51B,CAAP41B,CAPZ,EAQ4B51B,CAE5B,CAAAD,CAAA,CAAS,CAAA,CAXX,KAYO,IAAW,IAAX,GAAIC,CAAJ,CACLD,CAAA,CAAS,CAAA,CADJ,KAEA,CAAA,GAAIC,CAAJ,GAAWu1B,CAAX,CAAkB,CACvB,IAAA/2D,MAAA,EACA,KAAA01D,OAAAj1D,KAAA,CAAiB,CACfT,MAAO22D,CADQ,CAEfxhC,KAAM6hC,CAFS,CAGf/rD,SAAU,CAAA,CAHK,CAIfjO,MAAOumD,CAJQ,CAAjB,CAMA,OARuB,CAUvBA,CAAA,EAAU/hB,CAVL,CAYP,IAAAxhC,MAAA,EA7BoC,CA+BtC,IAAAw2D,WAAA,CAAgB,oBAAhB,CAAsCG,CAAtC,CArC0B,CA9HZ,CA+KlB,KAAIllB,GAASA,QAAQ,CAACH,CAAD,CAAQh/B,CAAR,CAAiBuT,CAAjB,CAA0B,CAC7C,IAAAyrB,MAAA,CAAaA,CACb,KAAAh/B,QAAA,CAAeA,CACf,KAAAuT,QAAA,CAAeA,CAH8B,CAM/C4rB,GAAA4lB,KAAA,CAAc/5D,CAAA,CAAO,QAAQ,EAAG,CAC9B,MAAO,EADuB,CAAlB,CAEX,CACDoxC,aAAc,CAAA,CADb,CAEDzjC,SAAU,CAAA,CAFT,CAFW,CAOdwmC,GAAA3yB,UAAA,CAAmB,CACjB9V,YAAayoC,EADI,CAGjB5uC,MAAOA,QAAQ,CAACsyB,CAAD,CAAO,CACpB,IAAAA,KAAA,CAAYA,CACZ,KAAAugC,OAAA,CAAc,IAAApkB,MAAAmkB,IAAA,CAAetgC,CAAf,CAEVn4B,EAAAA,CAAQ,IAAAs6D,WAAA,EAEe,EAA3B,GAAI,IAAA5B,OAAA95D,OAAJ,EACE,IAAA46D,WAAA,CAAgB,wBAAhB,CAA0C,IAAAd,OAAA,CAAY,CAAZ,CAA1C,CAGF14D;CAAAg0B,QAAA,CAAgB,CAAEA,CAAAh0B,CAAAg0B,QAClBh0B,EAAAiO,SAAA,CAAiB,CAAEA,CAAAjO,CAAAiO,SAEnB,OAAOjO,EAba,CAHL,CAmBjBu6D,QAASA,QAAQ,EAAG,CAClB,IAAIA,CACA,KAAAC,OAAA,CAAY,GAAZ,CAAJ,EACED,CACA,CADU,IAAAE,YAAA,EACV,CAAA,IAAAC,QAAA,CAAa,GAAb,CAFF,EAGW,IAAAF,OAAA,CAAY,GAAZ,CAAJ,CACLD,CADK,CACK,IAAAI,iBAAA,EADL,CAEI,IAAAH,OAAA,CAAY,GAAZ,CAAJ,CACLD,CADK,CACK,IAAA5S,OAAA,EADL,CAEI,IAAAiR,KAAA,EAAArlC,WAAJ,EAA8B,IAAAqlC,KAAA,EAAAzgC,KAA9B,GAAkD++B,GAAlD,CACLqD,CADK,CACKrD,EAAA,CAAU,IAAAwD,QAAA,EAAAviC,KAAV,CADL,CAEI,IAAAygC,KAAA,EAAArlC,WAAJ,CACLgnC,CADK,CACK,IAAAhnC,WAAA,EADL,CAEI,IAAAqlC,KAAA,EAAA3qD,SAAJ,CACLssD,CADK,CACK,IAAAtsD,SAAA,EADL,CAGL,IAAAurD,WAAA,CAAgB,0BAAhB,CAA4C,IAAAZ,KAAA,EAA5C,CAIF,KApBkB,IAmBd7c,CAnBc,CAmBR58C,CACV,CAAQ48C,CAAR,CAAe,IAAAye,OAAA,CAAY,GAAZ,CAAiB,GAAjB,CAAsB,GAAtB,CAAf,CAAA,CACoB,GAAlB,GAAIze,CAAA5jB,KAAJ,EACEoiC,CACA,CADU,IAAAK,aAAA,CAAkBL,CAAlB;AAA2Bp7D,CAA3B,CACV,CAAAA,CAAA,CAAU,IAFZ,EAGyB,GAAlB,GAAI48C,CAAA5jB,KAAJ,EACLh5B,CACA,CADUo7D,CACV,CAAAA,CAAA,CAAU,IAAAM,YAAA,CAAiBN,CAAjB,CAFL,EAGkB,GAAlB,GAAIxe,CAAA5jB,KAAJ,EACLh5B,CACA,CADUo7D,CACV,CAAAA,CAAA,CAAU,IAAAO,YAAA,CAAiBP,CAAjB,CAFL,EAIL,IAAAf,WAAA,CAAgB,YAAhB,CAGJ,OAAOe,EAlCW,CAnBH,CAwDjBf,WAAYA,QAAQ,CAAC1d,CAAD,CAAMzf,CAAN,CAAa,CAC/B,KAAM+S,GAAA,CAAa,QAAb,CAEA/S,CAAAlE,KAFA,CAEY2jB,CAFZ,CAEkBzf,CAAAr5B,MAFlB,CAEgC,CAFhC,CAEoC,IAAAm1B,KAFpC,CAE+C,IAAAA,KAAAhQ,UAAA,CAAoBkU,CAAAr5B,MAApB,CAF/C,CAAN,CAD+B,CAxDhB,CA8DjB+3D,UAAWA,QAAQ,EAAG,CACpB,GAA2B,CAA3B,GAAI,IAAArC,OAAA95D,OAAJ,CACE,KAAMwwC,GAAA,CAAa,MAAb,CAA0D,IAAAjX,KAA1D,CAAN,CACF,MAAO,KAAAugC,OAAA,CAAY,CAAZ,CAHa,CA9DL,CAoEjBE,KAAMA,QAAQ,CAACoC,CAAD,CAAKC,CAAL,CAASC,CAAT,CAAaC,CAAb,CAAiB,CAC7B,MAAO,KAAAC,UAAA,CAAe,CAAf,CAAkBJ,CAAlB,CAAsBC,CAAtB,CAA0BC,CAA1B,CAA8BC,CAA9B,CADsB,CApEd,CAuEjBC,UAAWA,QAAQ,CAACv7D,CAAD,CAAIm7D,CAAJ,CAAQC,CAAR,CAAYC,CAAZ,CAAgBC,CAAhB,CAAoB,CACrC,GAAI,IAAAzC,OAAA95D,OAAJ,CAAyBiB,CAAzB,CAA4B,CACtBw8B,CAAAA,CAAQ,IAAAq8B,OAAA,CAAY74D,CAAZ,CACZ,KAAIw7D,EAAIh/B,CAAAlE,KACR,IAAIkjC,CAAJ,GAAUL,CAAV,EAAgBK,CAAhB,GAAsBJ,CAAtB,EAA4BI,CAA5B,GAAkCH,CAAlC,EAAwCG,CAAxC;AAA8CF,CAA9C,EACK,EAACH,CAAD,EAAQC,CAAR,EAAeC,CAAf,EAAsBC,CAAtB,CADL,CAEE,MAAO9+B,EALiB,CAQ5B,MAAO,CAAA,CAT8B,CAvEtB,CAmFjBm+B,OAAQA,QAAQ,CAACQ,CAAD,CAAKC,CAAL,CAASC,CAAT,CAAaC,CAAb,CAAiB,CAE/B,MAAA,CADI9+B,CACJ,CADY,IAAAu8B,KAAA,CAAUoC,CAAV,CAAcC,CAAd,CAAkBC,CAAlB,CAAsBC,CAAtB,CACZ,GACE,IAAAzC,OAAAl3C,MAAA,EACO6a,CAAAA,CAFT,EAIO,CAAA,CANwB,CAnFhB,CA4FjBq+B,QAASA,QAAQ,CAACM,CAAD,CAAK,CACpB,GAA2B,CAA3B,GAAI,IAAAtC,OAAA95D,OAAJ,CACE,KAAMwwC,GAAA,CAAa,MAAb,CAA0D,IAAAjX,KAA1D,CAAN,CAGF,IAAIkE,EAAQ,IAAAm+B,OAAA,CAAYQ,CAAZ,CACP3+B,EAAL,EACE,IAAAm9B,WAAA,CAAgB,4BAAhB,CAA+CwB,CAA/C,CAAoD,GAApD,CAAyD,IAAApC,KAAA,EAAzD,CAEF,OAAOv8B,EATa,CA5FL,CAwGjBi/B,QAASA,QAAQ,CAAC9F,CAAD,CAAK+F,CAAL,CAAY,CAC3B,IAAIt2D,EAAKsyD,EAAA,CAAU/B,CAAV,CACT,OAAOl1D,EAAA,CAAOk7D,QAAsB,CAACx2D,CAAD,CAAOyc,CAAP,CAAe,CACjD,MAAOxc,EAAA,CAAGD,CAAH,CAASyc,CAAT,CAAiB85C,CAAjB,CAD0C,CAA5C,CAEJ,CACDttD,SAASstD,CAAAttD,SADR,CAEDkkC,OAAQ,CAACopB,CAAD,CAFP,CAFI,CAFoB,CAxGZ,CAkHjBE,SAAUA,QAAQ,CAACC,CAAD,CAAOlG,CAAP,CAAW+F,CAAX,CAAkBI,CAAlB,CAA+B,CAC/C,IAAI12D,EAAKsyD,EAAA,CAAU/B,CAAV,CACT,OAAOl1D,EAAA,CAAOs7D,QAAuB,CAAC52D,CAAD,CAAOyc,CAAP,CAAe,CAClD,MAAOxc,EAAA,CAAGD,CAAH,CAASyc,CAAT,CAAiBi6C,CAAjB,CAAuBH,CAAvB,CAD2C,CAA7C,CAEJ,CACDttD,SAAUytD,CAAAztD,SAAVA;AAA2BstD,CAAAttD,SAD1B,CAEDkkC,OAAQ,CAACwpB,CAATxpB,EAAwB,CAACupB,CAAD,CAAOH,CAAP,CAFvB,CAFI,CAFwC,CAlHhC,CA4HjBhoC,WAAYA,QAAQ,EAAG,CAIrB,IAHA,IAAI7J,EAAK,IAAAgxC,QAAA,EAAAviC,KAGT,CAAO,IAAAygC,KAAA,CAAU,GAAV,CAAP,EAAyB,IAAAwC,UAAA,CAAe,CAAf,CAAA7nC,WAAzB,EAA0D,CAAA,IAAA6nC,UAAA,CAAe,CAAf,CAAkB,GAAlB,CAA1D,CAAA,CACE1xC,CAAA,EAAM,IAAAgxC,QAAA,EAAAviC,KAAN,CAA4B,IAAAuiC,QAAA,EAAAviC,KAG9B,OAAO4Y,GAAA,CAASrnB,CAAT,CAAa,IAAAb,QAAb,CAA2B,IAAAsP,KAA3B,CARc,CA5HN,CAuIjBlqB,SAAUA,QAAQ,EAAG,CACnB,IAAIjO,EAAQ,IAAA06D,QAAA,EAAA16D,MAEZ,OAAOM,EAAA,CAAOu7D,QAAuB,EAAG,CACtC,MAAO77D,EAD+B,CAAjC,CAEJ,CACDiO,SAAU,CAAA,CADT,CAED+lB,QAAS,CAAA,CAFR,CAFI,CAHY,CAvIJ,CAkJjBsmC,WAAYA,QAAQ,EAAG,CAErB,IADA,IAAIA,EAAa,EACjB,CAAA,CAAA,CAGE,GAFyB,CAEpB,CAFD,IAAA5B,OAAA95D,OAEC,EAF0B,CAAA,IAAAg6D,KAAA,CAAU,GAAV,CAAe,GAAf,CAAoB,GAApB,CAAyB,GAAzB,CAE1B,EADH0B,CAAA72D,KAAA,CAAgB,IAAAg3D,YAAA,EAAhB,CACG,CAAA,CAAA,IAAAD,OAAA,CAAY,GAAZ,CAAL,CAGE,MAA8B,EAAvB,GAACF,CAAA17D,OAAD,CACD07D,CAAA,CAAW,CAAX,CADC,CAEDwB,QAAyB,CAAC92D,CAAD;AAAOyc,CAAP,CAAe,CAEtC,IADA,IAAIzhB,CAAJ,CACSH,EAAI,CADb,CACgBW,EAAK85D,CAAA17D,OAArB,CAAwCiB,CAAxC,CAA4CW,CAA5C,CAAgDX,CAAA,EAAhD,CACEG,CAAA,CAAQs6D,CAAA,CAAWz6D,CAAX,CAAA,CAAcmF,CAAd,CAAoByc,CAApB,CAEV,OAAOzhB,EAL+B,CAV7B,CAlJN,CAuKjBy6D,YAAaA,QAAQ,EAAG,CAGtB,IAFA,IAAIiB,EAAO,IAAA5+B,WAAA,EAEX,CAAgB,IAAA09B,OAAA,CAAY,GAAZ,CAAhB,CAAA,CACEkB,CAAA,CAAO,IAAAvtD,OAAA,CAAYutD,CAAZ,CAET,OAAOA,EANe,CAvKP,CAgLjBvtD,OAAQA,QAAQ,CAAC4tD,CAAD,CAAU,CACxB,IAAI92D,EAAK,IAAAqQ,QAAA,CAAa,IAAAolD,QAAA,EAAAviC,KAAb,CAAT,CACI6jC,CADJ,CAEIv8C,CAEJ,IAAI,IAAAm5C,KAAA,CAAU,GAAV,CAAJ,CAGE,IAFAoD,CACA,CADS,EACT,CAAAv8C,CAAA,CAAO,EACP,CAAO,IAAA+6C,OAAA,CAAY,GAAZ,CAAP,CAAA,CACEwB,CAAAv4D,KAAA,CAAY,IAAAq5B,WAAA,EAAZ,CAIJ,KAAIqV,EAAS,CAAC4pB,CAAD,CAAAp3D,OAAA,CAAiBq3D,CAAjB,EAA2B,EAA3B,CAEb,OAAO17D,EAAA,CAAO27D,QAAqB,CAACj3D,CAAD,CAAOyc,CAAP,CAAe,CAChD,IAAIrS,EAAQ2sD,CAAA,CAAQ/2D,CAAR,CAAcyc,CAAd,CACZ,IAAIhC,CAAJ,CAAU,CACRA,CAAA,CAAK,CAAL,CAAA,CAAUrQ,CAGV,KADIvP,CACJ,CADQm8D,CAAAp9D,OACR,CAAOiB,CAAA,EAAP,CAAA,CACE4f,CAAA,CAAK5f,CAAL,CAAS,CAAT,CAAA,CAAcm8D,CAAA,CAAOn8D,CAAP,CAAA,CAAUmF,CAAV,CAAgByc,CAAhB,CAGhB,OAAOxc,EAAAG,MAAA,CAAS7G,CAAT,CAAoBkhB,CAApB,CARC,CAWV,MAAOxa,EAAA,CAAGmK,CAAH,CAbyC,CAA3C,CAcJ,CACDnB,SAAU,CAAChJ,CAAAovB,UAAXpmB,EAA2BkkC,CAAA+pB,MAAA,CAAa3sB,EAAb,CAD1B,CAED4C,OAAQ,CAACltC,CAAAovB,UAAT8d,EAAyBA,CAFxB,CAdI,CAfiB,CAhLT,CAmNjBrV,WAAYA,QAAQ,EAAG,CACrB,MAAO,KAAAq/B,WAAA,EADc,CAnNN;AAuNjBA,WAAYA,QAAQ,EAAG,CACrB,IAAIT,EAAO,IAAAU,QAAA,EAAX,CACIb,CADJ,CAEIl/B,CACJ,OAAA,CAAKA,CAAL,CAAa,IAAAm+B,OAAA,CAAY,GAAZ,CAAb,GACOkB,CAAAxnC,OAKE,EAJL,IAAAslC,WAAA,CAAgB,0BAAhB,CACI,IAAArhC,KAAAhQ,UAAA,CAAoB,CAApB,CAAuBkU,CAAAr5B,MAAvB,CADJ,CAC0C,0BAD1C,CACsEq5B,CADtE,CAIK,CADPk/B,CACO,CADC,IAAAa,QAAA,EACD,CAAA97D,CAAA,CAAO+7D,QAAyB,CAACrzD,CAAD,CAAQyY,CAAR,CAAgB,CACrD,MAAOi6C,EAAAxnC,OAAA,CAAYlrB,CAAZ,CAAmBuyD,CAAA,CAAMvyD,CAAN,CAAayY,CAAb,CAAnB,CAAyCA,CAAzC,CAD8C,CAAhD,CAEJ,CACD0wB,OAAQ,CAACupB,CAAD,CAAOH,CAAP,CADP,CAFI,CANT,EAYOG,CAhBc,CAvNN,CA0OjBU,QAASA,QAAQ,EAAG,CAClB,IAAIV,EAAO,IAAAY,UAAA,EAAX,CACIC,CAEJ,IAAa,IAAA/B,OAAA,CAAY,GAAZ,CAAb,GACE+B,CACI,CADK,IAAAJ,WAAA,EACL,CAAA,IAAAzB,QAAA,CAAa,GAAb,CAFN,EAEyB,CACrB,IAAIa,EAAQ,IAAAY,WAAA,EAEZ,OAAO77D,EAAA,CAAOk8D,QAAsB,CAACx3D,CAAD,CAAOyc,CAAP,CAAe,CACjD,MAAOi6C,EAAA,CAAK12D,CAAL,CAAWyc,CAAX,CAAA,CAAqB86C,CAAA,CAAOv3D,CAAP,CAAayc,CAAb,CAArB,CAA4C85C,CAAA,CAAMv2D,CAAN,CAAYyc,CAAZ,CADF,CAA5C,CAEJ,CACDxT,SAAUytD,CAAAztD,SAAVA,EAA2BsuD,CAAAtuD,SAA3BA,EAA8CstD,CAAAttD,SAD7C,CAFI,CAHc,CAWzB,MAAOytD,EAjBW,CA1OH;AA8PjBY,UAAWA,QAAQ,EAAG,CAGpB,IAFA,IAAIZ,EAAO,IAAAe,WAAA,EAAX,CACIpgC,CACJ,CAAQA,CAAR,CAAgB,IAAAm+B,OAAA,CAAY,IAAZ,CAAhB,CAAA,CACEkB,CAAA,CAAO,IAAAD,SAAA,CAAcC,CAAd,CAAoBr/B,CAAAlE,KAApB,CAAgC,IAAAskC,WAAA,EAAhC,CAAmD,CAAA,CAAnD,CAET,OAAOf,EANa,CA9PL,CAuQjBe,WAAYA,QAAQ,EAAG,CAGrB,IAFA,IAAIf,EAAO,IAAAgB,SAAA,EAAX,CACIrgC,CACJ,CAAQA,CAAR,CAAgB,IAAAm+B,OAAA,CAAY,IAAZ,CAAhB,CAAA,CACEkB,CAAA,CAAO,IAAAD,SAAA,CAAcC,CAAd,CAAoBr/B,CAAAlE,KAApB,CAAgC,IAAAukC,SAAA,EAAhC,CAAiD,CAAA,CAAjD,CAET,OAAOhB,EANc,CAvQN,CAgRjBgB,SAAUA,QAAQ,EAAG,CAGnB,IAFA,IAAIhB,EAAO,IAAAiB,WAAA,EAAX,CACItgC,CACJ,CAAQA,CAAR,CAAgB,IAAAm+B,OAAA,CAAY,IAAZ,CAAiB,IAAjB,CAAsB,KAAtB,CAA4B,KAA5B,CAAhB,CAAA,CACEkB,CAAA,CAAO,IAAAD,SAAA,CAAcC,CAAd,CAAoBr/B,CAAAlE,KAApB,CAAgC,IAAAwkC,WAAA,EAAhC,CAET,OAAOjB,EANY,CAhRJ,CAyRjBiB,WAAYA,QAAQ,EAAG,CAGrB,IAFA,IAAIjB,EAAO,IAAAkB,SAAA,EAAX,CACIvgC,CACJ,CAAQA,CAAR,CAAgB,IAAAm+B,OAAA,CAAY,GAAZ,CAAiB,GAAjB,CAAsB,IAAtB,CAA4B,IAA5B,CAAhB,CAAA,CACEkB,CAAA,CAAO,IAAAD,SAAA,CAAcC,CAAd,CAAoBr/B,CAAAlE,KAApB;AAAgC,IAAAykC,SAAA,EAAhC,CAET,OAAOlB,EANc,CAzRN,CAkSjBkB,SAAUA,QAAQ,EAAG,CAGnB,IAFA,IAAIlB,EAAO,IAAAmB,eAAA,EAAX,CACIxgC,CACJ,CAAQA,CAAR,CAAgB,IAAAm+B,OAAA,CAAY,GAAZ,CAAgB,GAAhB,CAAhB,CAAA,CACEkB,CAAA,CAAO,IAAAD,SAAA,CAAcC,CAAd,CAAoBr/B,CAAAlE,KAApB,CAAgC,IAAA0kC,eAAA,EAAhC,CAET,OAAOnB,EANY,CAlSJ,CA2SjBmB,eAAgBA,QAAQ,EAAG,CAGzB,IAFA,IAAInB,EAAO,IAAAoB,MAAA,EAAX,CACIzgC,CACJ,CAAQA,CAAR,CAAgB,IAAAm+B,OAAA,CAAY,GAAZ,CAAgB,GAAhB,CAAoB,GAApB,CAAhB,CAAA,CACEkB,CAAA,CAAO,IAAAD,SAAA,CAAcC,CAAd,CAAoBr/B,CAAAlE,KAApB,CAAgC,IAAA2kC,MAAA,EAAhC,CAET,OAAOpB,EANkB,CA3SV,CAoTjBoB,MAAOA,QAAQ,EAAG,CAChB,IAAIzgC,CACJ,OAAI,KAAAm+B,OAAA,CAAY,GAAZ,CAAJ,CACS,IAAAD,QAAA,EADT,CAEO,CAAKl+B,CAAL,CAAa,IAAAm+B,OAAA,CAAY,GAAZ,CAAb,EACE,IAAAiB,SAAA,CAAchnB,EAAA4lB,KAAd,CAA2Bh+B,CAAAlE,KAA3B,CAAuC,IAAA2kC,MAAA,EAAvC,CADF,CAEA,CAAKzgC,CAAL,CAAa,IAAAm+B,OAAA,CAAY,GAAZ,CAAb,EACE,IAAAc,QAAA,CAAaj/B,CAAAlE,KAAb,CAAyB,IAAA2kC,MAAA,EAAzB,CADF,CAGE,IAAAvC,QAAA,EATO,CApTD,CAiUjBO,YAAaA,QAAQ,CAACnT,CAAD,CAAS,CAC5B,IAAIz7C;AAAS,IAAAqnB,WAAA,EAEb,OAAOjzB,EAAA,CAAOy8D,QAA0B,CAAC/zD,CAAD,CAAQyY,CAAR,CAAgBzc,CAAhB,CAAsB,CACxDqrC,CAAAA,CAAIrrC,CAAJqrC,EAAYsX,CAAA,CAAO3+C,CAAP,CAAcyY,CAAd,CAChB,OAAa,KAAN,EAAC4uB,CAAD,CAAc9xC,CAAd,CAA0B2N,CAAA,CAAOmkC,CAAP,CAF2B,CAAvD,CAGJ,CACDnc,OAAQA,QAAQ,CAAClrB,CAAD,CAAQhJ,CAAR,CAAeyhB,CAAf,CAAuB,CACrC,IAAI4uB,EAAIsX,CAAA,CAAO3+C,CAAP,CAAcyY,CAAd,CACH4uB,EAAL,EAAQsX,CAAAzzB,OAAA,CAAclrB,CAAd,CAAqBqnC,CAArB,CAAyB,EAAzB,CAA6B5uB,CAA7B,CACR,OAAOvV,EAAAgoB,OAAA,CAAcmc,CAAd,CAAiBrwC,CAAjB,CAH8B,CADtC,CAHI,CAHqB,CAjUb,CAgVjB66D,YAAaA,QAAQ,CAACn8D,CAAD,CAAM,CACzB,IAAIo+B,EAAa,IAAA3E,KAAjB,CAEI6kC,EAAU,IAAAlgC,WAAA,EACd,KAAA49B,QAAA,CAAa,GAAb,CAEA,OAAOp6D,EAAA,CAAO28D,QAA0B,CAACj4D,CAAD,CAAOyc,CAAP,CAAe,CAAA,IACjD4uB,EAAI3xC,CAAA,CAAIsG,CAAJ,CAAUyc,CAAV,CAD6C,CAEjD5hB,EAAIm9D,CAAA,CAAQh4D,CAAR,CAAcyc,CAAd,CAGRytB,GAAA,CAAqBrvC,CAArB,CAAwBi9B,CAAxB,CACA,OAAKuT,EAAL,CACIhB,EAAAhN,CAAiBgO,CAAA,CAAExwC,CAAF,CAAjBwiC,CAAuBvF,CAAvBuF,CADJ,CAAe9jC,CANsC,CAAhD,CASJ,CACD21B,OAAQA,QAAQ,CAAClvB,CAAD,CAAOhF,CAAP,CAAcyhB,CAAd,CAAsB,CACpC,IAAIriB,EAAM8vC,EAAA,CAAqB8tB,CAAA,CAAQh4D,CAAR,CAAcyc,CAAd,CAArB,CAA4Cqb,CAA5C,CAAV,CAEIuT,EAAIhB,EAAA,CAAiB3wC,CAAA,CAAIsG,CAAJ,CAAUyc,CAAV,CAAjB,CAAoCqb,CAApC,CACHuT,EAAL,EAAQ3xC,CAAAw1B,OAAA,CAAWlvB,CAAX,CAAiBqrC,CAAjB,CAAqB,EAArB,CAAyB5uB,CAAzB,CACR,OAAO4uB,EAAA,CAAEjxC,CAAF,CAAP,CAAgBY,CALoB,CADrC,CATI,CANkB,CAhVV,CA0WjB46D,aAAcA,QAAQ,CAACsC,CAAD,CAAWC,CAAX,CAA0B,CAC9C,IAAInB,EAAS,EACb,IAA8B,GAA9B,GAAI,IAAAjB,UAAA,EAAA5iC,KAAJ,EACE,EACE6jC,EAAAv4D,KAAA,CAAY,IAAAq5B,WAAA,EAAZ,CADF;MAES,IAAA09B,OAAA,CAAY,GAAZ,CAFT,CADF,CAKA,IAAAE,QAAA,CAAa,GAAb,CAEA,KAAI0C,EAAiB,IAAAjlC,KAArB,CAEI1Y,EAAOu8C,CAAAp9D,OAAA,CAAgB,EAAhB,CAAqB,IAEhC,OAAOy+D,SAA2B,CAACr0D,CAAD,CAAQyY,CAAR,CAAgB,CAChD,IAAItiB,EAAUg+D,CAAA,CAAgBA,CAAA,CAAcn0D,CAAd,CAAqByY,CAArB,CAAhB,CAA+CjgB,CAAA,CAAU27D,CAAV,CAAA,CAA2B5+D,CAA3B,CAAuCyK,CAApG,CACI/D,EAAKi4D,CAAA,CAASl0D,CAAT,CAAgByY,CAAhB,CAAwBtiB,CAAxB,CAAL8F,EAAyC9D,CAE7C,IAAIse,CAAJ,CAEE,IADA,IAAI5f,EAAIm8D,CAAAp9D,OACR,CAAOiB,CAAA,EAAP,CAAA,CACE4f,CAAA,CAAK5f,CAAL,CAAA,CAAUwvC,EAAA,CAAiB2sB,CAAA,CAAOn8D,CAAP,CAAA,CAAUmJ,CAAV,CAAiByY,CAAjB,CAAjB,CAA2C27C,CAA3C,CAId/tB,GAAA,CAAiBlwC,CAAjB,CAA0Bi+D,CAA1B,CA3oBJ,IA4oBuBn4D,CA5oBvB,CAAS,CACP,GA2oBqBA,CA3oBjB+G,YAAJ,GA2oBqB/G,CA3oBrB,CACE,KAAMmqC,GAAA,CAAa,QAAb,CA0oBiBguB,CA1oBjB,CAAN,CAGK,GAuoBcn4D,CAvoBd,GAAY8xD,EAAZ,EAuoBc9xD,CAvoBd,GAA4B+xD,EAA5B,EAuoBc/xD,CAvoBd,GAA6CgyD,EAA7C,CACL,KAAM7nB,GAAA,CAAa,QAAb,CAsoBiBguB,CAtoBjB,CAAN,CANK,CA+oBD/6B,CAAAA,CAAIp9B,CAAAG,MAAA,CACAH,CAAAG,MAAA,CAASjG,CAAT,CAAkBsgB,CAAlB,CADA,CAEAxa,CAAA,CAAGwa,CAAA,CAAK,CAAL,CAAH,CAAYA,CAAA,CAAK,CAAL,CAAZ,CAAqBA,CAAA,CAAK,CAAL,CAArB,CAA8BA,CAAA,CAAK,CAAL,CAA9B,CAAuCA,CAAA,CAAK,CAAL,CAAvC,CAEJA,EAAJ,GAEEA,CAAA7gB,OAFF,CAEgB,CAFhB,CAKA,OAAOywC,GAAA,CAAiBhN,CAAjB,CAAoB+6B,CAApB,CAxByC,CAbJ,CA1W/B,CAoZjBzC,iBAAkBA,QAAQ,EAAG,CAC3B,IAAI2C,EAAa,EACjB,IAA8B,GAA9B,GAAI,IAAAvC,UAAA,EAAA5iC,KAAJ,EACE,EAAG,CACD,GAAI,IAAAygC,KAAA,CAAU,GAAV,CAAJ,CAEE,KAEF0E,EAAA75D,KAAA,CAAgB,IAAAq5B,WAAA,EAAhB,CALC,CAAH,MAMS,IAAA09B,OAAA,CAAY,GAAZ,CANT,CADF;CASA,IAAAE,QAAA,CAAa,GAAb,CAEA,OAAOp6D,EAAA,CAAOi9D,QAA2B,CAACv4D,CAAD,CAAOyc,CAAP,CAAe,CAEtD,IADA,IAAI1e,EAAQ,EAAZ,CACSlD,EAAI,CADb,CACgBW,EAAK88D,CAAA1+D,OAArB,CAAwCiB,CAAxC,CAA4CW,CAA5C,CAAgDX,CAAA,EAAhD,CACEkD,CAAAU,KAAA,CAAW65D,CAAA,CAAWz9D,CAAX,CAAA,CAAcmF,CAAd,CAAoByc,CAApB,CAAX,CAEF,OAAO1e,EAL+C,CAAjD,CAMJ,CACDixB,QAAS,CAAA,CADR,CAED/lB,SAAUqvD,CAAApB,MAAA,CAAiB3sB,EAAjB,CAFT,CAGD4C,OAAQmrB,CAHP,CANI,CAboB,CApZZ,CA8ajB3V,OAAQA,QAAQ,EAAG,CAAA,IACbjoD,EAAO,EADM,CACF89D,EAAW,EAC1B,IAA8B,GAA9B,GAAI,IAAAzC,UAAA,EAAA5iC,KAAJ,EACE,EAAG,CACD,GAAI,IAAAygC,KAAA,CAAU,GAAV,CAAJ,CAEE,KAEF,KAAIv8B,EAAQ,IAAAq+B,QAAA,EACRr+B,EAAApuB,SAAJ,CACEvO,CAAA+D,KAAA,CAAU44B,CAAAr8B,MAAV,CADF,CAEWq8B,CAAA9I,WAAJ,CACL7zB,CAAA+D,KAAA,CAAU44B,CAAAlE,KAAV,CADK,CAGL,IAAAqhC,WAAA,CAAgB,aAAhB,CAA+Bn9B,CAA/B,CAEF,KAAAq+B,QAAA,CAAa,GAAb,CACA8C,EAAA/5D,KAAA,CAAc,IAAAq5B,WAAA,EAAd,CAdC,CAAH,MAeS,IAAA09B,OAAA,CAAY,GAAZ,CAfT,CADF,CAkBA,IAAAE,QAAA,CAAa,GAAb,CAEA,OAAOp6D,EAAA,CAAOm9D,QAA4B,CAACz4D,CAAD,CAAOyc,CAAP,CAAe,CAEvD,IADA,IAAIkmC,EAAS,EAAb,CACS9nD,EAAI,CADb,CACgBW,EAAKg9D,CAAA5+D,OAArB,CAAsCiB,CAAtC,CAA0CW,CAA1C,CAA8CX,CAAA,EAA9C,CACE8nD,CAAA,CAAOjoD,CAAA,CAAKG,CAAL,CAAP,CAAA;AAAkB29D,CAAA,CAAS39D,CAAT,CAAA,CAAYmF,CAAZ,CAAkByc,CAAlB,CAEpB,OAAOkmC,EALgD,CAAlD,CAMJ,CACD3zB,QAAS,CAAA,CADR,CAED/lB,SAAUuvD,CAAAtB,MAAA,CAAe3sB,EAAf,CAFT,CAGD4C,OAAQqrB,CAHP,CANI,CAtBU,CA9aF,CA2enB,KAAItsB,GAAuBtkC,EAAA,EAA3B,CACIqkC,GAAyBrkC,EAAA,EAD7B,CA8HIilC,GAAgBlyC,MAAAmiB,UAAAijB,QA9HpB,CA64EIoY,GAAa3+C,CAAA,CAAO,MAAP,CA74EjB,CA+4EIg/C,GAAe,CACjBvkB,KAAM,MADW,CAEjBwlB,IAAK,KAFY,CAGjBC,IAAK,KAHY,CAMjBxlB,aAAc,aANG,CAOjBylB,GAAI,IAPa,CA/4EnB,CA4/GI9zB,GAAiBrsB,CAAA,CAAO,UAAP,CA5/GrB,CAswHIwjD,EAAiB1jD,CAAA0a,cAAA,CAAuB,GAAvB,CAtwHrB,CAuwHIkpC,GAAYne,EAAA,CAAW1lC,CAAAwL,SAAA8c,KAAX,CAwOhBpR,GAAAmM,QAAA,CAA0B,CAAC,UAAD,CAiV1B2gC,GAAA3gC,QAAA,CAAyB,CAAC,SAAD,CAuEzBihC,GAAAjhC,QAAA,CAAuB,CAAC,SAAD,CAavB,KAAIqlB,GAAc,GAAlB,CAoKI2gB,GAAe,CACjB+E,KAAMlH,CAAA,CAAW,UAAX,CAAuB,CAAvB,CADW,CAEfmY,GAAInY,CAAA,CAAW,UAAX,CAAuB,CAAvB,CAA0B,CAA1B,CAA6B,CAAA,CAA7B,CAFW,CAGdoY,EAAGpY,CAAA,CAAW,UAAX,CAAuB,CAAvB,CAHW,CAIjBqY,KAAMnY,EAAA,CAAc,OAAd,CAJW,CAKhBoY,IAAKpY,EAAA,CAAc,OAAd,CAAuB,CAAA,CAAvB,CALW,CAMfiH,GAAInH,CAAA,CAAW,OAAX,CAAoB,CAApB,CAAuB,CAAvB,CANW,CAOduY,EAAGvY,CAAA,CAAW,OAAX,CAAoB,CAApB,CAAuB,CAAvB,CAPW,CAQfoH,GAAIpH,CAAA,CAAW,MAAX,CAAmB,CAAnB,CARW,CASdhnB,EAAGgnB,CAAA,CAAW,MAAX;AAAmB,CAAnB,CATW,CAUfqH,GAAIrH,CAAA,CAAW,OAAX,CAAoB,CAApB,CAVW,CAWdwY,EAAGxY,CAAA,CAAW,OAAX,CAAoB,CAApB,CAXW,CAYfyY,GAAIzY,CAAA,CAAW,OAAX,CAAoB,CAApB,CAAwB,GAAxB,CAZW,CAadnlD,EAAGmlD,CAAA,CAAW,OAAX,CAAoB,CAApB,CAAwB,GAAxB,CAbW,CAcfuH,GAAIvH,CAAA,CAAW,SAAX,CAAsB,CAAtB,CAdW,CAed0B,EAAG1B,CAAA,CAAW,SAAX,CAAsB,CAAtB,CAfW,CAgBfwH,GAAIxH,CAAA,CAAW,SAAX,CAAsB,CAAtB,CAhBW,CAiBdzU,EAAGyU,CAAA,CAAW,SAAX,CAAsB,CAAtB,CAjBW,CAoBhB0H,IAAK1H,CAAA,CAAW,cAAX,CAA2B,CAA3B,CApBW,CAqBjB0Y,KAAMxY,EAAA,CAAc,KAAd,CArBW,CAsBhByY,IAAKzY,EAAA,CAAc,KAAd,CAAqB,CAAA,CAArB,CAtBW,CAuBdv2C,EAnCLivD,QAAmB,CAAC3Y,CAAD,CAAO1B,CAAP,CAAgB,CACjC,MAAyB,GAAlB,CAAA0B,CAAAqH,SAAA,EAAA,CAAuB/I,CAAA7b,MAAA,CAAc,CAAd,CAAvB,CAA0C6b,CAAA7b,MAAA,CAAc,CAAd,CADhB,CAYhB,CAwBdm2B,EAxELC,QAAuB,CAAC7Y,CAAD,CAAO,CACxB8Y,CAAAA,CAAQ,EAARA,CAAY9Y,CAAAiC,kBAAA,EAMhB,OAHA8W,EAGA,EAL0B,CAATA,EAACD,CAADC,CAAc,GAAdA,CAAoB,EAKrC,GAHcnZ,EAAA,CAAU9uB,IAAA,CAAY,CAAP,CAAAgoC,CAAA,CAAW,OAAX,CAAqB,MAA1B,CAAA,CAAkCA,CAAlC,CAAyC,EAAzC,CAAV,CAAwD,CAAxD,CAGd,CAFclZ,EAAA,CAAU9uB,IAAAkuB,IAAA,CAAS8Z,CAAT,CAAgB,EAAhB,CAAV,CAA+B,CAA/B,CAEd,CAP4B,CAgDX,CAyBfE,GAAIzY,EAAA,CAAW,CAAX,CAzBW,CA0Bd0Y,EAAG1Y,EAAA,CAAW,CAAX,CA1BW,CA2Bd2Y,EAAGrY,EA3BW,CA4BdsY,GAAItY,EA5BU,CA6BduY,IAAKvY,EA7BS,CA8BdwY,KAlCLC,QAAsB,CAACtZ,CAAD,CAAO1B,CAAP,CAAgB,CACpC,MAA6B,EAAtB,EAAA0B,CAAAS,YAAA,EAAA,CAA0BnC,CAAArb,SAAA,CAAiB,CAAjB,CAA1B,CAAgDqb,CAAArb,SAAA,CAAiB,CAAjB,CADnB,CAInB,CApKnB,CAqMI6e,GAAqB,sFArMzB;AAsMID,GAAgB,UA6FpB/E,GAAA5gC,QAAA,CAAqB,CAAC,SAAD,CA6HrB,KAAIghC,GAAkBphD,EAAA,CAAQuB,CAAR,CAAtB,CAWIggD,GAAkBvhD,EAAA,CAAQmN,EAAR,CAoQtBm0C,GAAAlhC,QAAA,CAAwB,CAAC,QAAD,CAgHxB,KAAIvS,GAAsB7N,EAAA,CAAQ,CAChCyqB,SAAU,GADsB,CAEhC9iB,QAASA,QAAQ,CAACrG,CAAD,CAAUN,CAAV,CAAgB,CAC/B,GAAKqkB,CAAArkB,CAAAqkB,KAAL,EAAmBo4C,CAAAz8D,CAAAy8D,UAAnB,EAAsCj3D,CAAAxF,CAAAwF,KAAtC,CACE,MAAO,SAAQ,CAACkB,CAAD,CAAQpG,CAAR,CAAiB,CAE9B,GAA0C,GAA1C,GAAIA,CAAA,CAAQ,CAAR,CAAAR,SAAAmI,YAAA,EAAJ,CAAA,CAGA,IAAIoc,EAA+C,4BAAxC,GAAA/kB,EAAArC,KAAA,CAAcqD,CAAAP,KAAA,CAAa,MAAb,CAAd,CAAA,CACA,YADA,CACe,MAC1BO,EAAAgI,GAAA,CAAW,OAAX,CAAoB,QAAQ,CAACkT,CAAD,CAAQ,CAE7Blb,CAAAN,KAAA,CAAaqkB,CAAb,CAAL,EACE7I,CAAA6vB,eAAA,EAHgC,CAApC,CALA,CAF8B,CAFH,CAFD,CAAR,CAA1B,CA6WIr5B,GAA6B,EAIjCrV,EAAA,CAAQue,EAAR,CAAsB,QAAQ,CAACwhD,CAAD,CAAW/zC,CAAX,CAAqB,CAEjD,GAAgB,UAAhB,EAAI+zC,CAAJ,CAAA,CAEA,IAAIC,EAAahvC,EAAA,CAAmB,KAAnB,CAA2BhF,CAA3B,CACjB3W,GAAA,CAA2B2qD,CAA3B,CAAA,CAAyC,QAAQ,EAAG,CAClD,MAAO,CACLlzC,SAAU,GADL,CAELF,SAAU,GAFL,CAGL1C,KAAMA,QAAQ,CAACngB,CAAD,CAAQpG,CAAR,CAAiBN,CAAjB,CAAuB,CACnC0G,CAAAhH,OAAA,CAAaM,CAAA,CAAK28D,CAAL,CAAb;AAA+BC,QAAiC,CAACl/D,CAAD,CAAQ,CACtEsC,CAAAw0B,KAAA,CAAU7L,CAAV,CAAoB,CAAEjrB,CAAAA,CAAtB,CADsE,CAAxE,CADmC,CAHhC,CAD2C,CAHpD,CAFiD,CAAnD,CAmBAf,EAAA,CAAQ0e,EAAR,CAAsB,QAAQ,CAACwhD,CAAD,CAAW73D,CAAX,CAAmB,CAC/CgN,EAAA,CAA2BhN,CAA3B,CAAA,CAAqC,QAAQ,EAAG,CAC9C,MAAO,CACLukB,SAAU,GADL,CAEL1C,KAAMA,QAAQ,CAACngB,CAAD,CAAQpG,CAAR,CAAiBN,CAAjB,CAAuB,CAGnC,GAAe,WAAf,GAAIgF,CAAJ,EAA0D,GAA1D,EAA8BhF,CAAAiR,UAAAnP,OAAA,CAAsB,CAAtB,CAA9B,GACMN,CADN,CACcxB,CAAAiR,UAAAzP,MAAA,CAAqBysD,EAArB,CADd,EAEa,CACTjuD,CAAAw0B,KAAA,CAAU,WAAV,CAAuB,IAAIjzB,MAAJ,CAAWC,CAAA,CAAM,CAAN,CAAX,CAAqBA,CAAA,CAAM,CAAN,CAArB,CAAvB,CACA,OAFS,CAMbkF,CAAAhH,OAAA,CAAaM,CAAA,CAAKgF,CAAL,CAAb,CAA2B83D,QAA+B,CAACp/D,CAAD,CAAQ,CAChEsC,CAAAw0B,KAAA,CAAUxvB,CAAV,CAAkBtH,CAAlB,CADgE,CAAlE,CAXmC,CAFhC,CADuC,CADD,CAAjD,CAwBAf,EAAA,CAAQ,CAAC,KAAD,CAAQ,QAAR,CAAkB,MAAlB,CAAR,CAAmC,QAAQ,CAACgsB,CAAD,CAAW,CACpD,IAAIg0C,EAAahvC,EAAA,CAAmB,KAAnB,CAA2BhF,CAA3B,CACjB3W,GAAA,CAA2B2qD,CAA3B,CAAA,CAAyC,QAAQ,EAAG,CAClD,MAAO,CACLpzC,SAAU,EADL,CAEL1C,KAAMA,QAAQ,CAACngB,CAAD,CAAQpG,CAAR,CAAiBN,CAAjB,CAAuB,CAAA,IAC/B08D,EAAW/zC,CADoB,CAE/BnjB,EAAOmjB,CAEM,OAAjB,GAAIA,CAAJ,EAC4C,4BAD5C,GACIrpB,EAAArC,KAAA,CAAcqD,CAAAP,KAAA,CAAa,MAAb,CAAd,CADJ,GAEEyF,CAEA,CAFO,WAEP,CADAxF,CAAAytB,MAAA,CAAWjoB,CAAX,CACA,CADmB,YACnB;AAAAk3D,CAAA,CAAW,IAJb,CAOA18D,EAAAuxB,SAAA,CAAcorC,CAAd,CAA0B,QAAQ,CAACj/D,CAAD,CAAQ,CACnCA,CAAL,EAOAsC,CAAAw0B,KAAA,CAAUhvB,CAAV,CAAgB9H,CAAhB,CAMA,CAAIi/C,EAAJ,EAAY+f,CAAZ,EAAsBp8D,CAAAP,KAAA,CAAa28D,CAAb,CAAuB18D,CAAA,CAAKwF,CAAL,CAAvB,CAbtB,EACmB,MADnB,GACMmjB,CADN,EAEI3oB,CAAAw0B,KAAA,CAAUhvB,CAAV,CAAgB,IAAhB,CAHoC,CAA1C,CAXmC,CAFhC,CAD2C,CAFA,CAAtD,CAjyjBuC,KAw0jBnCghD,GAAe,CACjBU,YAAaroD,CADI,CAEjB4oD,gBASFsV,QAA8B,CAAC1V,CAAD,CAAU7hD,CAAV,CAAgB,CAC5C6hD,CAAAT,MAAA,CAAgBphD,CAD4B,CAX3B,CAGjBqiD,eAAgBhpD,CAHC,CAIjBkpD,aAAclpD,CAJG,CAKjBupD,UAAWvpD,CALM,CAMjB2pD,aAAc3pD,CANG,CAOjBiqD,cAAejqD,CAPE,CAyDnBunD,GAAAhnC,QAAA,CAAyB,CAAC,UAAD,CAAa,QAAb,CAAuB,QAAvB,CAAiC,UAAjC,CAA6C,cAA7C,CAqYzB,KAAI49C,GAAuBA,QAAQ,CAACC,CAAD,CAAW,CAC5C,MAAO,CAAC,UAAD,CAAa,QAAQ,CAAC/nD,CAAD,CAAW,CAgErC,MA/DoBhI,CAClB1H,KAAM,MADY0H,CAElBuc,SAAUwzC,CAAA,CAAW,KAAX,CAAmB,GAFX/vD,CAGlBzE,WAAY29C,EAHMl5C,CAIlBvG,QAASu2D,QAAsB,CAACC,CAAD,CAAcn9D,CAAd,CAAoB,CAEjDm9D,CAAA1gD,SAAA,CAAqB6rC,EAArB,CAAA7rC,SAAA,CAA8CkxC,EAA9C,CAEA,KAAIyP,EAAWp9D,CAAAwF,KAAA,CAAY,MAAZ,CAAsBy3D,CAAA,EAAYj9D,CAAA2O,OAAZ,CAA0B,QAA1B;AAAqC,CAAA,CAE1E,OAAO,CACL8gB,IAAK4tC,QAAsB,CAAC32D,CAAD,CAAQy2D,CAAR,CAAqBn9D,CAArB,CAA2ByI,CAA3B,CAAuC,CAEhE,GAAM,EAAA,QAAA,EAAYzI,EAAZ,CAAN,CAAyB,CAOvB,IAAIs9D,EAAuBA,QAAQ,CAAC9hD,CAAD,CAAQ,CACzC9U,CAAAE,OAAA,CAAa,QAAQ,EAAG,CACtB6B,CAAA6+C,iBAAA,EACA7+C,EAAAqgD,cAAA,EAFsB,CAAxB,CAKAttC,EAAA6vB,eAAA,EANyC,CASxB8xB,EAAA78D,CAAY,CAAZA,CAv9f3BwgC,iBAAA,CAu9f2CxoB,QAv9f3C,CAu9fqDglD,CAv9frD,CAAmC,CAAA,CAAnC,CA29fQH,EAAA70D,GAAA,CAAe,UAAf,CAA2B,QAAQ,EAAG,CACpC4M,CAAA,CAAS,QAAQ,EAAG,CACIioD,CAAA78D,CAAY,CAAZA,CA19flCsY,oBAAA,CA09fkDN,QA19flD,CA09f4DglD,CA19f5D,CAAsC,CAAA,CAAtC,CAy9f8B,CAApB,CAEG,CAFH,CAEM,CAAA,CAFN,CADoC,CAAtC,CApBuB,CA2BzB,IAAIC,EAAiB90D,CAAA89C,aAEjB6W,EAAJ,GACElwB,EAAA,CAAOxmC,CAAP,CAAc,IAAd,CAAoB+B,CAAAm+C,MAApB,CAAsCn+C,CAAtC,CAAkDA,CAAAm+C,MAAlD,CACA,CAAA5mD,CAAAuxB,SAAA,CAAc6rC,CAAd,CAAwB,QAAQ,CAACpmC,CAAD,CAAW,CACrCvuB,CAAAm+C,MAAJ,GAAyB5vB,CAAzB,GACAkW,EAAA,CAAOxmC,CAAP,CAAc,IAAd,CAAoB+B,CAAAm+C,MAApB,CAAsC3qD,CAAtC,CAAiDwM,CAAAm+C,MAAjD,CAEA,CADA2W,CAAA9V,gBAAA,CAA+Bh/C,CAA/B,CAA2CuuB,CAA3C,CACA,CAAAkW,EAAA,CAAOxmC,CAAP,CAAc,IAAd,CAAoB+B,CAAAm+C,MAApB,CAAsCn+C,CAAtC,CAAkDA,CAAAm+C,MAAlD,CAHA,CADyC,CAA3C,CAFF,CASAuW,EAAA70D,GAAA,CAAe,UAAf,CAA2B,QAAQ,EAAG,CACpCi1D,CAAA1V,eAAA,CAA8Bp/C,CAA9B,CACI20D;CAAJ,EACElwB,EAAA,CAAOxmC,CAAP,CAAc,IAAd,CAAoB1G,CAAA,CAAKo9D,CAAL,CAApB,CAAoCnhE,CAApC,CAA+CwM,CAAAm+C,MAA/C,CAEF5oD,EAAA,CAAOyK,CAAP,CAAmB+9C,EAAnB,CALoC,CAAtC,CAxCgE,CAD7D,CAN0C,CAJjCt5C,CADiB,CAAhC,CADqC,CAA9C,CAqEIA,GAAgB8vD,EAAA,EArEpB,CAsEIpuD,GAAkBouD,EAAA,CAAqB,CAAA,CAArB,CAtEtB,CAkFI9S,GAAkB,0EAlFtB,CAmFIsT,GAAa,qFAnFjB,CAoFIC,GAAe,mGApFnB,CAqFIC,GAAgB,oCArFpB,CAsFIC,GAAc,2BAtFlB,CAuFIC,GAAuB,+DAvF3B,CAwFIC,GAAc,mBAxFlB,CAyFIC,GAAe,kBAzFnB;AA0FIC,GAAc,yCA1FlB,CA4FIC,GAAY,CAyFd,KA21BFC,QAAsB,CAACv3D,CAAD,CAAQpG,CAAR,CAAiBN,CAAjB,CAAuBioD,CAAvB,CAA6BvzC,CAA7B,CAAuCpC,CAAvC,CAAiD,CACrE62C,EAAA,CAAcziD,CAAd,CAAqBpG,CAArB,CAA8BN,CAA9B,CAAoCioD,CAApC,CAA0CvzC,CAA1C,CAAoDpC,CAApD,CACA02C,GAAA,CAAqBf,CAArB,CAFqE,CAp7BvD,CAsLd,KAAQ8C,EAAA,CAAoB,MAApB,CAA4B4S,EAA5B,CACD5T,EAAA,CAAiB4T,EAAjB,CAA8B,CAAC,MAAD,CAAS,IAAT,CAAe,IAAf,CAA9B,CADC,CAED,YAFC,CAtLM,CAmRd,iBAAkB5S,EAAA,CAAoB,eAApB,CAAqC6S,EAArC,CACd7T,EAAA,CAAiB6T,EAAjB,CAAuC,yBAAA,MAAA,CAAA,GAAA,CAAvC,CADc,CAEd,yBAFc,CAnRJ,CAiXd,KAAQ7S,EAAA,CAAoB,MAApB,CAA4BgT,EAA5B,CACJhU,EAAA,CAAiBgU,EAAjB,CAA8B,CAAC,IAAD,CAAO,IAAP,CAAa,IAAb,CAAmB,KAAnB,CAA9B,CADI,CAEL,cAFK,CAjXM,CA8cd,KAAQhT,EAAA,CAAoB,MAApB,CAA4B8S,EAA5B,CAikBVK,QAAmB,CAACC,CAAD,CAAUC,CAAV,CAAwB,CACzC,GAAI/+D,EAAA,CAAO8+D,CAAP,CAAJ,CACE,MAAOA,EAGT,IAAI1hE,CAAA,CAAS0hE,CAAT,CAAJ,CAAuB,CACrBN,EAAAp8D,UAAA,CAAwB,CACxB,KAAI+C,EAAQq5D,EAAAjnD,KAAA,CAAiBunD,CAAjB,CACZ,IAAI35D,CAAJ,CAAW,CAAA,IACL8+C,EAAO,CAAC9+C,CAAA,CAAM,CAAN,CADH,CAEL65D,EAAO,CAAC75D,CAAA,CAAM,CAAN,CAFH,CAIL85D,EADAC,CACAD,CADQ,CAHH,CAKLE,EAAU,CALL,CAMLC,EAAe,CANV,CAOL/a,EAAaL,EAAA,CAAuBC,CAAvB,CAPR,CAQLob,EAAuB,CAAvBA,EAAWL,CAAXK,CAAkB,CAAlBA,CAEAN,EAAJ,GACEG,CAGA,CAHQH,CAAA7T,SAAA,EAGR,CAFA+T,CAEA;AAFUF,CAAAlZ,WAAA,EAEV,CADAsZ,CACA,CADUJ,CAAA1T,WAAA,EACV,CAAA+T,CAAA,CAAeL,CAAAxT,gBAAA,EAJjB,CAOA,OAAO,KAAIvpD,IAAJ,CAASiiD,CAAT,CAAe,CAAf,CAAkBI,CAAAI,QAAA,EAAlB,CAAyC4a,CAAzC,CAAkDH,CAAlD,CAAyDD,CAAzD,CAAkEE,CAAlE,CAA2EC,CAA3E,CAjBE,CAHU,CAwBvB,MAAO3T,IA7BkC,CAjkBjC,CAAqD,UAArD,CA9cM,CA2iBd,MAASC,EAAA,CAAoB,OAApB,CAA6B+S,EAA7B,CACN/T,EAAA,CAAiB+T,EAAjB,CAA+B,CAAC,MAAD,CAAS,IAAT,CAA/B,CADM,CAEN,SAFM,CA3iBK,CAooBd,OAqjBFa,QAAwB,CAACj4D,CAAD,CAAQpG,CAAR,CAAiBN,CAAjB,CAAuBioD,CAAvB,CAA6BvzC,CAA7B,CAAuCpC,CAAvC,CAAiD,CACvE84C,EAAA,CAAgB1kD,CAAhB,CAAuBpG,CAAvB,CAAgCN,CAAhC,CAAsCioD,CAAtC,CACAkB,GAAA,CAAcziD,CAAd,CAAqBpG,CAArB,CAA8BN,CAA9B,CAAoCioD,CAApC,CAA0CvzC,CAA1C,CAAoDpC,CAApD,CAEA21C,EAAAsD,aAAA,CAAoB,QACpBtD,EAAAuD,SAAArqD,KAAA,CAAmB,QAAQ,CAACzD,CAAD,CAAQ,CACjC,MAAIuqD,EAAAiB,SAAA,CAAcxrD,CAAd,CAAJ,CAAsC,IAAtC,CACIggE,EAAA12D,KAAA,CAAmBtJ,CAAnB,CAAJ,CAAsC6kD,UAAA,CAAW7kD,CAAX,CAAtC,CACOzB,CAH0B,CAAnC,CAMAgsD,EAAAgB,YAAA9nD,KAAA,CAAsB,QAAQ,CAACzD,CAAD,CAAQ,CACpC,GAAK,CAAAuqD,CAAAiB,SAAA,CAAcxrD,CAAd,CAAL,CAA2B,CACzB,GAAK,CAAA0B,CAAA,CAAS1B,CAAT,CAAL,CACE,KAAMguD,GAAA,CAAe,QAAf,CAA0DhuD,CAA1D,CAAN,CAEFA,CAAA,CAAQA,CAAA4B,SAAA,EAJiB,CAM3B,MAAO5B,EAP6B,CAAtC,CAUA,IAAIwB,CAAA,CAAUc,CAAAyiD,IAAV,CAAJ,EAA2BziD,CAAA4rD,MAA3B,CAAuC,CACrC,IAAIC,CACJ5D,EAAA6D,YAAArJ,IAAA,CAAuBsJ,QAAQ,CAACruD,CAAD,CAAQ,CACrC,MAAOuqD,EAAAiB,SAAA,CAAcxrD,CAAd,CAAP;AAA+BuB,CAAA,CAAY4sD,CAAZ,CAA/B,EAAsDnuD,CAAtD,EAA+DmuD,CAD1B,CAIvC7rD,EAAAuxB,SAAA,CAAc,KAAd,CAAqB,QAAQ,CAACvuB,CAAD,CAAM,CAC7B9D,CAAA,CAAU8D,CAAV,CAAJ,EAAuB,CAAA5D,CAAA,CAAS4D,CAAT,CAAvB,GACEA,CADF,CACQu/C,UAAA,CAAWv/C,CAAX,CAAgB,EAAhB,CADR,CAGA6oD,EAAA,CAASzsD,CAAA,CAAS4D,CAAT,CAAA,EAAkB,CAAAu2C,KAAA,CAAMv2C,CAAN,CAAlB,CAA+BA,CAA/B,CAAqC/G,CAE9CgsD,EAAA+D,UAAA,EANiC,CAAnC,CANqC,CAgBvC,GAAI9sD,CAAA,CAAUc,CAAAi0B,IAAV,CAAJ,EAA2Bj0B,CAAAisD,MAA3B,CAAuC,CACrC,IAAIC,CACJjE,EAAA6D,YAAA73B,IAAA,CAAuBk4B,QAAQ,CAACzuD,CAAD,CAAQ,CACrC,MAAOuqD,EAAAiB,SAAA,CAAcxrD,CAAd,CAAP,EAA+BuB,CAAA,CAAYitD,CAAZ,CAA/B,EAAsDxuD,CAAtD,EAA+DwuD,CAD1B,CAIvClsD,EAAAuxB,SAAA,CAAc,KAAd,CAAqB,QAAQ,CAACvuB,CAAD,CAAM,CAC7B9D,CAAA,CAAU8D,CAAV,CAAJ,EAAuB,CAAA5D,CAAA,CAAS4D,CAAT,CAAvB,GACEA,CADF,CACQu/C,UAAA,CAAWv/C,CAAX,CAAgB,EAAhB,CADR,CAGAkpD,EAAA,CAAS9sD,CAAA,CAAS4D,CAAT,CAAA,EAAkB,CAAAu2C,KAAA,CAAMv2C,CAAN,CAAlB,CAA+BA,CAA/B,CAAqC/G,CAE9CgsD,EAAA+D,UAAA,EANiC,CAAnC,CANqC,CArCgC,CAzrCzD,CA+tBd,IAghBF4S,QAAqB,CAACl4D,CAAD,CAAQpG,CAAR,CAAiBN,CAAjB,CAAuBioD,CAAvB,CAA6BvzC,CAA7B,CAAuCpC,CAAvC,CAAiD,CAGpE62C,EAAA,CAAcziD,CAAd,CAAqBpG,CAArB,CAA8BN,CAA9B,CAAoCioD,CAApC,CAA0CvzC,CAA1C,CAAoDpC,CAApD,CACA02C,GAAA,CAAqBf,CAArB,CAEAA,EAAAsD,aAAA,CAAoB,KACpBtD,EAAA6D,YAAA1oC,IAAA,CAAuBy7C,QAAQ,CAACC,CAAD,CAAaC,CAAb,CAAwB,CACrD,IAAIrhE,EAAQohE,CAARphE,EAAsBqhE,CAC1B,OAAO9W,EAAAiB,SAAA,CAAcxrD,CAAd,CAAP,EAA+B8/D,EAAAx2D,KAAA,CAAgBtJ,CAAhB,CAFsB,CAPa,CA/uCtD,CAyzBd,MAmcFshE,QAAuB,CAACt4D,CAAD,CAAQpG,CAAR,CAAiBN,CAAjB,CAAuBioD,CAAvB,CAA6BvzC,CAA7B,CAAuCpC,CAAvC,CAAiD,CAGtE62C,EAAA,CAAcziD,CAAd,CAAqBpG,CAArB,CAA8BN,CAA9B,CAAoCioD,CAApC,CAA0CvzC,CAA1C,CAAoDpC,CAApD,CACA02C,GAAA,CAAqBf,CAArB,CAEAA;CAAAsD,aAAA,CAAoB,OACpBtD,EAAA6D,YAAAmT,MAAA,CAAyBC,QAAQ,CAACJ,CAAD,CAAaC,CAAb,CAAwB,CACvD,IAAIrhE,EAAQohE,CAARphE,EAAsBqhE,CAC1B,OAAO9W,EAAAiB,SAAA,CAAcxrD,CAAd,CAAP,EAA+B+/D,EAAAz2D,KAAA,CAAkBtJ,CAAlB,CAFwB,CAPa,CA5vCxD,CA+2Bd,MA0ZFyhE,QAAuB,CAACz4D,CAAD,CAAQpG,CAAR,CAAiBN,CAAjB,CAAuBioD,CAAvB,CAA6B,CAE9ChpD,CAAA,CAAYe,CAAAwF,KAAZ,CAAJ,EACElF,CAAAN,KAAA,CAAa,MAAb,CAhwmBK,EAAEpC,EAgwmBP,CASF0C,EAAAgI,GAAA,CAAW,OAAX,CANeib,QAAQ,CAAC8lC,CAAD,CAAK,CACtB/oD,CAAA,CAAQ,CAAR,CAAA8+D,QAAJ,EACEnX,CAAAwB,cAAA,CAAmBzpD,CAAAtC,MAAnB,CAA+B2rD,CAA/B,EAAqCA,CAAA/wC,KAArC,CAFwB,CAM5B,CAEA2vC,EAAA4B,QAAA,CAAeC,QAAQ,EAAG,CAExBxpD,CAAA,CAAQ,CAAR,CAAA8+D,QAAA,CADYp/D,CAAAtC,MACZ,EAA+BuqD,CAAAsB,WAFP,CAK1BvpD,EAAAuxB,SAAA,CAAc,OAAd,CAAuB02B,CAAA4B,QAAvB,CAnBkD,CAzwCpC,CAq6Bd,SAuYFwV,QAA0B,CAAC34D,CAAD,CAAQpG,CAAR,CAAiBN,CAAjB,CAAuBioD,CAAvB,CAA6BvzC,CAA7B,CAAuCpC,CAAvC,CAAiDU,CAAjD,CAA0Dc,CAA1D,CAAkE,CAC1F,IAAIwrD,EAAY9S,EAAA,CAAkB14C,CAAlB,CAA0BpN,CAA1B,CAAiC,aAAjC,CAAgD1G,CAAAu/D,YAAhD,CAAkE,CAAA,CAAlE,CAAhB,CACIC,EAAahT,EAAA,CAAkB14C,CAAlB,CAA0BpN,CAA1B,CAAiC,cAAjC,CAAiD1G,CAAAy/D,aAAjD,CAAoE,CAAA,CAApE,CAMjBn/D,EAAAgI,GAAA,CAAW,OAAX,CAJeib,QAAQ,CAAC8lC,CAAD,CAAK,CAC1BpB,CAAAwB,cAAA,CAAmBnpD,CAAA,CAAQ,CAAR,CAAA8+D,QAAnB,CAAuC/V,CAAvC;AAA6CA,CAAA/wC,KAA7C,CAD0B,CAI5B,CAEA2vC,EAAA4B,QAAA,CAAeC,QAAQ,EAAG,CACxBxpD,CAAA,CAAQ,CAAR,CAAA8+D,QAAA,CAAqBnX,CAAAsB,WADG,CAO1BtB,EAAAiB,SAAA,CAAgBwW,QAAQ,CAAChiE,CAAD,CAAQ,CAC9B,MAAiB,CAAA,CAAjB,GAAOA,CADuB,CAIhCuqD,EAAAgB,YAAA9nD,KAAA,CAAsB,QAAQ,CAACzD,CAAD,CAAQ,CACpC,MAAOqE,GAAA,CAAOrE,CAAP,CAAc4hE,CAAd,CAD6B,CAAtC,CAIArX,EAAAuD,SAAArqD,KAAA,CAAmB,QAAQ,CAACzD,CAAD,CAAQ,CACjC,MAAOA,EAAA,CAAQ4hE,CAAR,CAAoBE,CADM,CAAnC,CAzB0F,CA5yC5E,CAu6Bd,OAAU3gE,CAv6BI,CAw6Bd,OAAUA,CAx6BI,CAy6Bd,OAAUA,CAz6BI,CA06Bd,MAASA,CA16BK,CA26Bd,KAAQA,CA36BM,CA5FhB,CA8jDIkO,GAAiB,CAAC,UAAD,CAAa,UAAb,CAAyB,SAAzB,CAAoC,QAApC,CACjB,QAAQ,CAACuF,CAAD,CAAWoC,CAAX,CAAqB1B,CAArB,CAA8Bc,CAA9B,CAAsC,CAChD,MAAO,CACL2V,SAAU,GADL,CAELD,QAAS,CAAC,UAAD,CAFJ,CAGL3C,KAAM,CACJ4I,IAAKA,QAAQ,CAAC/oB,CAAD,CAAQpG,CAAR,CAAiBN,CAAjB,CAAuB2/D,CAAvB,CAA8B,CACrCA,CAAA,CAAM,CAAN,CAAJ,EACE,CAAC3B,EAAA,CAAUz9D,CAAA,CAAUP,CAAAsY,KAAV,CAAV,CAAD,EAAoC0lD,EAAAnoC,KAApC,EAAoDnvB,CAApD,CAA2DpG,CAA3D,CAAoEN,CAApE,CAA0E2/D,CAAA,CAAM,CAAN,CAA1E,CAAoFjrD,CAApF,CACoDpC,CADpD,CAC8DU,CAD9D,CACuEc,CADvE,CAFuC,CADvC,CAHD,CADyC,CAD7B,CA9jDrB,CAglDI8rD,GAAwB,oBAhlD5B,CA0oDIhuD,GAAmBA,QAAQ,EAAG,CAChC,MAAO,CACL6X,SAAU,GADL,CAELF,SAAU,GAFL,CAGL5iB,QAASA,QAAQ,CAACy3C,CAAD;AAAMyhB,CAAN,CAAe,CAC9B,MAAID,GAAA54D,KAAA,CAA2B64D,CAAAluD,QAA3B,CAAJ,CACSmuD,QAA4B,CAACp5D,CAAD,CAAQ8a,CAAR,CAAaxhB,CAAb,CAAmB,CACpDA,CAAAw0B,KAAA,CAAU,OAAV,CAAmB9tB,CAAA4yC,MAAA,CAAYt5C,CAAA2R,QAAZ,CAAnB,CADoD,CADxD,CAKSouD,QAAoB,CAACr5D,CAAD,CAAQ8a,CAAR,CAAaxhB,CAAb,CAAmB,CAC5C0G,CAAAhH,OAAA,CAAaM,CAAA2R,QAAb,CAA2BquD,QAAyB,CAACtiE,CAAD,CAAQ,CAC1DsC,CAAAw0B,KAAA,CAAU,OAAV,CAAmB92B,CAAnB,CAD0D,CAA5D,CAD4C,CANlB,CAH3B,CADyB,CA1oDlC,CAitDIkQ,GAAkB,CAAC,UAAD,CAAa,QAAQ,CAACqyD,CAAD,CAAW,CACpD,MAAO,CACLx2C,SAAU,IADL,CAEL9iB,QAASu5D,QAAsB,CAACC,CAAD,CAAkB,CAC/CF,CAAA9pC,kBAAA,CAA2BgqC,CAA3B,CACA,OAAOC,SAAmB,CAAC15D,CAAD,CAAQpG,CAAR,CAAiBN,CAAjB,CAAuB,CAC/CigE,CAAA5pC,iBAAA,CAA0B/1B,CAA1B,CAAmCN,CAAA2N,OAAnC,CACArN,EAAA,CAAUA,CAAA,CAAQ,CAAR,CACVoG,EAAAhH,OAAA,CAAaM,CAAA2N,OAAb,CAA0B0yD,QAA0B,CAAC3iE,CAAD,CAAQ,CAC1D4C,CAAA+W,YAAA,CAAsB3Z,CAAA,GAAUzB,CAAV,CAAsB,EAAtB,CAA2ByB,CADS,CAA5D,CAH+C,CAFF,CAF5C,CAD6C,CAAhC,CAjtDtB,CAqxDIsQ,GAA0B,CAAC,cAAD,CAAiB,UAAjB,CAA6B,QAAQ,CAACkF,CAAD,CAAe+sD,CAAf,CAAyB,CAC1F,MAAO,CACLt5D,QAAS25D,QAA8B,CAACH,CAAD,CAAkB,CACvDF,CAAA9pC,kBAAA,CAA2BgqC,CAA3B,CACA,OAAOI,SAA2B,CAAC75D,CAAD,CAAQpG,CAAR,CAAiBN,CAAjB,CAAuB,CACnD81B,CAAAA,CAAgB5iB,CAAA,CAAa5S,CAAAN,KAAA,CAAaA,CAAAytB,MAAA1f,eAAb,CAAb,CACpBkyD;CAAA5pC,iBAAA,CAA0B/1B,CAA1B,CAAmCw1B,CAAAQ,YAAnC,CACAh2B,EAAA,CAAUA,CAAA,CAAQ,CAAR,CACVN,EAAAuxB,SAAA,CAAc,gBAAd,CAAgC,QAAQ,CAAC7zB,CAAD,CAAQ,CAC9C4C,CAAA+W,YAAA,CAAsB3Z,CAAA,GAAUzB,CAAV,CAAsB,EAAtB,CAA2ByB,CADH,CAAhD,CAJuD,CAFF,CADpD,CADmF,CAA9D,CArxD9B,CAq1DIoQ,GAAsB,CAAC,MAAD,CAAS,QAAT,CAAmB,UAAnB,CAA+B,QAAQ,CAACwG,CAAD,CAAOR,CAAP,CAAemsD,CAAf,CAAyB,CACxF,MAAO,CACLx2C,SAAU,GADL,CAEL9iB,QAAS65D,QAA0B,CAACC,CAAD,CAAWhsC,CAAX,CAAmB,CACpD,IAAIisC,EAAmB5sD,CAAA,CAAO2gB,CAAA5mB,WAAP,CAAvB,CACI8yD,EAAkB7sD,CAAA,CAAO2gB,CAAA5mB,WAAP,CAA0B+yD,QAAuB,CAACljE,CAAD,CAAQ,CAC7E,MAAO4B,CAAC5B,CAAD4B,EAAU,EAAVA,UAAA,EADsE,CAAzD,CAGtB2gE,EAAA9pC,kBAAA,CAA2BsqC,CAA3B,CAEA,OAAOI,SAAuB,CAACn6D,CAAD,CAAQpG,CAAR,CAAiBN,CAAjB,CAAuB,CACnDigE,CAAA5pC,iBAAA,CAA0B/1B,CAA1B,CAAmCN,CAAA6N,WAAnC,CAEAnH,EAAAhH,OAAA,CAAaihE,CAAb,CAA8BG,QAA8B,EAAG,CAG7DxgE,CAAAyD,KAAA,CAAauQ,CAAAysD,eAAA,CAAoBL,CAAA,CAAiBh6D,CAAjB,CAApB,CAAb,EAA6D,EAA7D,CAH6D,CAA/D,CAHmD,CAPD,CAFjD,CADiF,CAAhE,CAr1D1B,CA+6DIoK,GAAoB9R,EAAA,CAAQ,CAC9ByqB,SAAU,GADoB,CAE9BD,QAAS,SAFqB,CAG9B3C,KAAMA,QAAQ,CAACngB,CAAD,CAAQpG,CAAR,CAAiBN,CAAjB,CAAuBioD,CAAvB,CAA6B,CACzCA,CAAA+Y,qBAAA7/D,KAAA,CAA+B,QAAQ,EAAG,CACxCuF,CAAA4yC,MAAA,CAAYt5C,CAAA6Q,SAAZ,CADwC,CAA1C,CADyC,CAHb,CAAR,CA/6DxB;AA4rEI3C,GAAmBy+C,EAAA,CAAe,EAAf,CAAmB,CAAA,CAAnB,CA5rEvB,CA4uEIr+C,GAAsBq+C,EAAA,CAAe,KAAf,CAAsB,CAAtB,CA5uE1B,CA4xEIv+C,GAAuBu+C,EAAA,CAAe,MAAf,CAAuB,CAAvB,CA5xE3B,CAs1EIn+C,GAAmB23C,EAAA,CAAY,CACjCx/C,QAASA,QAAQ,CAACrG,CAAD,CAAUN,CAAV,CAAgB,CAC/BA,CAAAw0B,KAAA,CAAU,SAAV,CAAqBv4B,CAArB,CACAqE,EAAAoc,YAAA,CAAoB,UAApB,CAF+B,CADA,CAAZ,CAt1EvB,CA+jFIhO,GAAwB,CAAC,QAAQ,EAAG,CACtC,MAAO,CACL+a,SAAU,GADL,CAEL/iB,MAAO,CAAA,CAFF,CAGL+B,WAAY,GAHP,CAIL8gB,SAAU,GAJL,CAD+B,CAAZ,CA/jF5B,CAyxFItX,GAAoB,EAzxFxB,CA8xFIgvD,GAAmB,CACrB,KAAQ,CAAA,CADa,CAErB,MAAS,CAAA,CAFY,CAIvBtkE,EAAA,CACE,6IAAA,MAAA,CAAA,GAAA,CADF,CAEE,QAAQ,CAACg9C,CAAD,CAAY,CAClB,IAAIzxB,EAAgByF,EAAA,CAAmB,KAAnB,CAA2BgsB,CAA3B,CACpB1nC,GAAA,CAAkBiW,CAAlB,CAAA,CAAmC,CAAC,QAAD,CAAW,YAAX,CAAyB,QAAQ,CAACpU,CAAD,CAASE,CAAT,CAAqB,CACvF,MAAO,CACLyV,SAAU,GADL,CAEL9iB,QAASA,QAAQ,CAACwjB,CAAD,CAAWnqB,CAAX,CAAiB,CAKhC,IAAI2C;AAAKmR,CAAA,CAAO9T,CAAA,CAAKkoB,CAAL,CAAP,CAAgD,IAAhD,CAA4E,CAAA,CAA5E,CACT,OAAOg5C,SAAuB,CAACx6D,CAAD,CAAQpG,CAAR,CAAiB,CAC7CA,CAAAgI,GAAA,CAAWqxC,CAAX,CAAsB,QAAQ,CAACn+B,CAAD,CAAQ,CACpC,IAAI0I,EAAWA,QAAQ,EAAG,CACxBvhB,CAAA,CAAG+D,CAAH,CAAU,CAACqvC,OAAOv6B,CAAR,CAAV,CADwB,CAGtBylD,GAAA,CAAiBtnB,CAAjB,CAAJ,EAAmC3lC,CAAAirB,QAAnC,CACEv4B,CAAAjH,WAAA,CAAiBykB,CAAjB,CADF,CAGExd,CAAAE,OAAA,CAAasd,CAAb,CAPkC,CAAtC,CAD6C,CANf,CAF7B,CADgF,CAAtD,CAFjB,CAFtB,CAmgBA,KAAIlV,GAAgB,CAAC,UAAD,CAAa,QAAQ,CAACoD,CAAD,CAAW,CAClD,MAAO,CACLiiB,aAAc,CAAA,CADT,CAEL/H,WAAY,SAFP,CAGL/C,SAAU,GAHL,CAILwD,SAAU,CAAA,CAJL,CAKLtD,SAAU,GALL,CAMLyJ,MAAO,CAAA,CANF,CAOLrM,KAAMA,QAAQ,CAAC2J,CAAD,CAASrG,CAAT,CAAmBsD,CAAnB,CAA0Bw6B,CAA1B,CAAgCv3B,CAAhC,CAA6C,CAAA,IACnD1kB,CADmD,CAC5C4f,CAD4C,CAChCu1C,CACvB3wC,EAAA9wB,OAAA,CAAc+tB,CAAA1e,KAAd,CAA0BqyD,QAAwB,CAAC1jE,CAAD,CAAQ,CAEpDA,CAAJ,CACOkuB,CADP,EAEI8E,CAAA,CAAY,QAAQ,CAAChtB,CAAD,CAAQ29D,CAAR,CAAkB,CACpCz1C,CAAA,CAAay1C,CACb39D,EAAA,CAAMA,CAAApH,OAAA,EAAN,CAAA,CAAwBN,CAAAm3B,cAAA,CAAuB,aAAvB,CAAuC1F,CAAA1e,KAAvC,CAAoD,GAApD,CAIxB/C,EAAA,CAAQ,CACNtI,MAAOA,CADD,CAGR0O,EAAAshD,MAAA,CAAehwD,CAAf,CAAsBymB,CAAAzrB,OAAA,EAAtB,CAAyCyrB,CAAzC,CAToC,CAAtC,CAFJ,EAeMg3C,CAQJ,GAPEA,CAAAz5C,OAAA,EACA,CAAAy5C,CAAA,CAAmB,IAMrB,EAJIv1C,CAIJ,GAHEA,CAAA1iB,SAAA,EACA,CAAA0iB,CAAA,CAAa,IAEf,EAAI5f,CAAJ,GACEm1D,CAIA;AAJmBl3D,EAAA,CAAc+B,CAAAtI,MAAd,CAInB,CAHA0O,CAAAuhD,MAAA,CAAewN,CAAf,CAAAlsC,KAAA,CAAsC,QAAQ,EAAG,CAC/CksC,CAAA,CAAmB,IAD4B,CAAjD,CAGA,CAAAn1D,CAAA,CAAQ,IALV,CAvBF,CAFwD,CAA1D,CAFuD,CAPtD,CAD2C,CAAhC,CAApB,CAkOIkD,GAAqB,CAAC,kBAAD,CAAqB,eAArB,CAAsC,UAAtC,CAAkD,MAAlD,CACP,QAAQ,CAAC4F,CAAD,CAAqB5C,CAArB,CAAsCE,CAAtC,CAAkDkC,CAAlD,CAAwD,CAChF,MAAO,CACLmV,SAAU,KADL,CAELF,SAAU,GAFL,CAGLwD,SAAU,CAAA,CAHL,CAILT,WAAY,SAJP,CAKL7jB,WAAYxB,EAAApI,KALP,CAML8H,QAASA,QAAQ,CAACrG,CAAD,CAAUN,CAAV,CAAgB,CAAA,IAC3BshE,EAASthE,CAAAiP,UAATqyD,EAA2BthE,CAAA6B,IADA,CAE3B0/D,EAAYvhE,CAAAshC,OAAZigC,EAA2B,EAFA,CAG3BC,EAAgBxhE,CAAAyhE,WAEpB,OAAO,SAAQ,CAAC/6D,CAAD,CAAQyjB,CAAR,CAAkBsD,CAAlB,CAAyBw6B,CAAzB,CAA+Bv3B,CAA/B,CAA4C,CAAA,IACrDgxC,EAAgB,CADqC,CAErD1rB,CAFqD,CAGrD2rB,CAHqD,CAIrDC,CAJqD,CAMrDC,EAA4BA,QAAQ,EAAG,CACrCF,CAAJ,GACEA,CAAAj6C,OAAA,EACA,CAAAi6C,CAAA,CAAkB,IAFpB,CAII3rB,EAAJ,GACEA,CAAA9sC,SAAA,EACA,CAAA8sC,CAAA,CAAe,IAFjB,CAII4rB,EAAJ,GACExvD,CAAAuhD,MAAA,CAAeiO,CAAf,CAAA3sC,KAAA,CAAoC,QAAQ,EAAG,CAC7C0sC,CAAA,CAAkB,IAD2B,CAA/C,CAIA,CADAA,CACA,CADkBC,CAClB,CAAAA,CAAA,CAAiB,IALnB,CATyC,CAkB3Cl7D,EAAAhH,OAAA,CAAa4U,CAAAwtD,mBAAA,CAAwBR,CAAxB,CAAb,CAA8CS,QAA6B,CAAClgE,CAAD,CAAM,CAC/E,IAAImgE;AAAiBA,QAAQ,EAAG,CAC1B,CAAA9iE,CAAA,CAAUsiE,CAAV,CAAJ,EAAkCA,CAAlC,EAAmD,CAAA96D,CAAA4yC,MAAA,CAAYkoB,CAAZ,CAAnD,EACEtvD,CAAA,EAF4B,CAAhC,CAKI+vD,EAAe,EAAEP,CAEjB7/D,EAAJ,EAGEiT,CAAA,CAAiBjT,CAAjB,CAAsB,CAAA,CAAtB,CAAAozB,KAAA,CAAiC,QAAQ,CAAC2H,CAAD,CAAW,CAClD,GAAIqlC,CAAJ,GAAqBP,CAArB,CAAA,CACA,IAAIL,EAAW36D,CAAAylB,KAAA,EACf87B,EAAA71B,SAAA,CAAgBwK,CAQZl5B,EAAAA,CAAQgtB,CAAA,CAAY2wC,CAAZ,CAAsB,QAAQ,CAAC39D,CAAD,CAAQ,CAChDm+D,CAAA,EACAzvD,EAAAshD,MAAA,CAAehwD,CAAf,CAAsB,IAAtB,CAA4BymB,CAA5B,CAAA8K,KAAA,CAA2C+sC,CAA3C,CAFgD,CAAtC,CAKZhsB,EAAA,CAAeqrB,CACfO,EAAA,CAAiBl+D,CAEjBsyC,EAAAgE,MAAA,CAAmB,uBAAnB,CAA4Cn4C,CAA5C,CACA6E,EAAA4yC,MAAA,CAAYioB,CAAZ,CAnBA,CADkD,CAApD,CAqBG,QAAQ,EAAG,CACRU,CAAJ,GAAqBP,CAArB,GACEG,CAAA,EACA,CAAAn7D,CAAAszC,MAAA,CAAY,sBAAZ,CAAoCn4C,CAApC,CAFF,CADY,CArBd,CA2BA,CAAA6E,CAAAszC,MAAA,CAAY,0BAAZ,CAAwCn4C,CAAxC,CA9BF,GAgCEggE,CAAA,EACA,CAAA5Z,CAAA71B,SAAA,CAAgB,IAjClB,CAR+E,CAAjF,CAxByD,CAL5B,CAN5B,CADyE,CADzD,CAlOzB,CA6TIrgB,GAAgC,CAAC,UAAD,CAClC,QAAQ,CAACkuD,CAAD,CAAW,CACjB,MAAO,CACLx2C,SAAU,KADL,CAELF,SAAW,IAFN,CAGLC,QAAS,WAHJ,CAIL3C,KAAMA,QAAQ,CAACngB,CAAD,CAAQyjB,CAAR,CAAkBsD,CAAlB,CAAyBw6B,CAAzB,CAA+B,CACvC,KAAAjhD,KAAA,CAAWmjB,CAAA,CAAS,CAAT,CAAA7qB,SAAA,EAAX,CAAJ,EAIE6qB,CAAAxmB,MAAA,EACA,CAAAs8D,CAAA,CAAS7pD,EAAA,CAAoB6xC,CAAA71B,SAApB;AAAmCp2B,CAAnC,CAAAmb,WAAT,CAAA,CAAkEzQ,CAAlE,CACIw7D,QAA8B,CAACx+D,CAAD,CAAQ,CACxCymB,CAAArmB,OAAA,CAAgBJ,CAAhB,CADwC,CAD1C,CAGG,CAACynB,oBAAqBhB,CAAtB,CAHH,CALF,GAYAA,CAAApmB,KAAA,CAAckkD,CAAA71B,SAAd,CACA,CAAA6tC,CAAA,CAAS91C,CAAAmJ,SAAA,EAAT,CAAA,CAA8B5sB,CAA9B,CAbA,CAD2C,CAJxC,CADU,CADe,CA7TpC,CA8YI0I,GAAkB+2C,EAAA,CAAY,CAChC58B,SAAU,GADsB,CAEhC5iB,QAASA,QAAQ,EAAG,CAClB,MAAO,CACL8oB,IAAKA,QAAQ,CAAC/oB,CAAD,CAAQpG,CAAR,CAAiBmsB,CAAjB,CAAwB,CACnC/lB,CAAA4yC,MAAA,CAAY7sB,CAAAtd,OAAZ,CADmC,CADhC,CADW,CAFY,CAAZ,CA9YtB,CA2eIyB,GAAkBA,QAAQ,EAAG,CAC/B,MAAO,CACL6Y,SAAU,GADL,CAELF,SAAU,GAFL,CAGLC,QAAS,SAHJ,CAIL3C,KAAMA,QAAQ,CAACngB,CAAD,CAAQpG,CAAR,CAAiBN,CAAjB,CAAuBioD,CAAvB,CAA6B,CAGzC,IAAIt3C,EAASrQ,CAAAN,KAAA,CAAaA,CAAAytB,MAAA9c,OAAb,CAATA,EAA4C,IAAhD,CACIwxD,EAA6B,OAA7BA,GAAaniE,CAAAspD,OADjB,CAEIzhD,EAAYs6D,CAAA,CAAa3qD,CAAA,CAAK7G,CAAL,CAAb,CAA4BA,CAiB5Cs3C,EAAAuD,SAAArqD,KAAA,CAfYoC,QAAQ,CAACw7D,CAAD,CAAY,CAE9B,GAAI,CAAA9/D,CAAA,CAAY8/D,CAAZ,CAAJ,CAAA,CAEA,IAAIt+C,EAAO,EAEPs+C,EAAJ,EACEpiE,CAAA,CAAQoiE,CAAA3+D,MAAA,CAAgByH,CAAhB,CAAR,CAAoC,QAAQ,CAACnK,CAAD,CAAQ,CAC9CA,CAAJ,EAAW+iB,CAAAtf,KAAA,CAAUghE,CAAA,CAAa3qD,CAAA,CAAK9Z,CAAL,CAAb,CAA2BA,CAArC,CADuC,CAApD,CAKF,OAAO+iB,EAVP,CAF8B,CAehC,CACAwnC,EAAAgB,YAAA9nD,KAAA,CAAsB,QAAQ,CAACzD,CAAD,CAAQ,CACpC,MAAIhB,EAAA,CAAQgB,CAAR,CAAJ;AACSA,CAAAiH,KAAA,CAAWgM,CAAX,CADT,CAIO1U,CAL6B,CAAtC,CASAgsD,EAAAiB,SAAA,CAAgBwW,QAAQ,CAAChiE,CAAD,CAAQ,CAC9B,MAAO,CAACA,CAAR,EAAiB,CAACA,CAAApB,OADY,CAhCS,CAJtC,CADwB,CA3ejC,CA+hBIqxD,GAAc,UA/hBlB,CAgiBIC,GAAgB,YAhiBpB,CAiiBItF,GAAiB,aAjiBrB,CAkiBIC,GAAc,UAliBlB,CAqiBIwF,GAAgB,YAriBpB,CAwiBIrC,GAAiB,IAAIxvD,CAAJ,CAAW,SAAX,CAxiBrB,CAgvBIkmE,GAAoB,CAAC,QAAD,CAAW,mBAAX,CAAgC,QAAhC,CAA0C,UAA1C,CAAsD,QAAtD,CAAgE,UAAhE,CAA4E,UAA5E,CAAwF,YAAxF,CAAsG,IAAtG,CAA4G,cAA5G,CACpB,QAAQ,CAAC5xC,CAAD,CAAS1d,CAAT,CAA4B2a,CAA5B,CAAmCtD,CAAnC,CAA6CrW,CAA7C,CAAqD1B,CAArD,CAA+D8C,CAA/D,CAAyElB,CAAzE,CAAqFE,CAArF,CAAyFhB,CAAzF,CAAuG,CAEjH,IAAAmvD,YAAA,CADA,IAAA9Y,WACA,CADkBjiC,MAAAwjC,IAElB,KAAAwX,gBAAA,CAAuBrmE,CACvB,KAAA6vD,YAAA,CAAmB,EACnB,KAAAyW,iBAAA,CAAwB,EACxB,KAAA/W,SAAA,CAAgB,EAChB,KAAAvC,YAAA,CAAmB,EACnB,KAAA+X,qBAAA,CAA4B,EAC5B,KAAAwB,WAAA,CAAkB,CAAA,CAClB;IAAAC,SAAA,CAAgB,CAAA,CAChB,KAAA3b,UAAA,CAAiB,CAAA,CACjB,KAAAD,OAAA,CAAc,CAAA,CACd,KAAAE,OAAA,CAAc,CAAA,CACd,KAAAC,SAAA,CAAgB,CAAA,CAChB,KAAAP,OAAA,CAAc,EACd,KAAAC,UAAA,CAAiB,EACjB,KAAAC,SAAA,CAAgB1qD,CAChB,KAAA2qD,MAAA,CAAa1zC,CAAA,CAAaua,CAAAjoB,KAAb,EAA2B,EAA3B,CAA+B,CAAA,CAA/B,CAAA,CAAsCgrB,CAAtC,CAlBoG,KAqB7GkyC,EAAgB5uD,CAAA,CAAO2Z,CAAAhd,QAAP,CArB6F,CAsB7GkyD,EAAsBD,CAAA9wC,OAtBuF,CAuB7GgxC,EAAaF,CAvBgG,CAwB7GG,EAAaF,CAxBgG,CAyB7GG,EAAkB,IAzB2F,CA0B7GC,CA1B6G,CA2B7G9a,EAAO,IAEX,KAAA+a,aAAA,CAAoBC,QAAQ,CAAC18C,CAAD,CAAU,CAEpC,IADA0hC,CAAAoD,SACA,CADgB9kC,CAChB,GAAeA,CAAA28C,aAAf,CAAqC,CAAA,IAC/BC,EAAoBrvD,CAAA,CAAO2Z,CAAAhd,QAAP,CAAuB,IAAvB,CADW,CAE/B2yD,EAAoBtvD,CAAA,CAAO2Z,CAAAhd,QAAP,CAAuB,QAAvB,CAExBmyD,EAAA,CAAaA,QAAQ,CAACpyC,CAAD,CAAS,CAC5B,IAAIsuC,EAAa4D,CAAA,CAAclyC,CAAd,CACbzzB,EAAA,CAAW+hE,CAAX,CAAJ,GACEA,CADF,CACeqE,CAAA,CAAkB3yC,CAAlB,CADf,CAGA,OAAOsuC,EALqB,CAO9B+D,EAAA,CAAaA,QAAQ,CAACryC,CAAD,CAASwG,CAAT,CAAmB,CAClCj6B,CAAA,CAAW2lE,CAAA,CAAclyC,CAAd,CAAX,CAAJ,CACE4yC,CAAA,CAAkB5yC,CAAlB,CAA0B,CAAC6yC,KAAMpb,CAAAoa,YAAP,CAA1B,CADF,CAGEM,CAAA,CAAoBnyC,CAApB,CAA4By3B,CAAAoa,YAA5B,CAJoC,CAXL,CAArC,IAkBO,IAAKzwC,CAAA8wC,CAAA9wC,OAAL,CACL,KAAM85B,GAAA,CAAe,WAAf,CACFj+B,CAAAhd,QADE,CACajN,EAAA,CAAY2mB,CAAZ,CADb,CAAN;AArBkC,CA8CtC,KAAA0/B,QAAA,CAAehrD,CAoBf,KAAAqqD,SAAA,CAAgBoa,QAAQ,CAAC5lE,CAAD,CAAQ,CAC9B,MAAOuB,EAAA,CAAYvB,CAAZ,CAAP,EAAuC,EAAvC,GAA6BA,CAA7B,EAAuD,IAAvD,GAA6CA,CAA7C,EAA+DA,CAA/D,GAAyEA,CAD3C,CA/FiF,KAmG7G4oD,EAAan8B,CAAAzhB,cAAA,CAAuB,iBAAvB,CAAb49C,EAA0DE,EAnGmD,CAoG7G+c,EAAyB,CAwB7Bvb,GAAA,CAAqB,CACnBC,KAAM,IADa,CAEnB99B,SAAUA,CAFS,CAGnB+9B,IAAKA,QAAQ,CAAC7C,CAAD,CAASzb,CAAT,CAAmB,CAC9Byb,CAAA,CAAOzb,CAAP,CAAA,CAAmB,CAAA,CADW,CAHb,CAMnBue,MAAOA,QAAQ,CAAC9C,CAAD,CAASzb,CAAT,CAAmB,CAChC,OAAOyb,CAAA,CAAOzb,CAAP,CADyB,CANf,CASnB0c,WAAYA,CATO,CAUnBl0C,SAAUA,CAVS,CAArB,CAwBA,KAAAo2C,aAAA,CAAoBgb,QAAQ,EAAG,CAC7Bvb,CAAApB,OAAA,CAAc,CAAA,CACdoB,EAAAnB,UAAA,CAAiB,CAAA,CACjB10C,EAAAsK,YAAA,CAAqByN,CAArB,CAA+Bo+B,EAA/B,CACAn2C,EAAAqK,SAAA,CAAkB0N,CAAlB,CAA4Bm+B,EAA5B,CAJ6B,CAkB/B,KAAAF,UAAA,CAAiBqb,QAAQ,EAAG,CAC1Bxb,CAAApB,OAAA,CAAc,CAAA,CACdoB,EAAAnB,UAAA,CAAiB,CAAA,CACjB10C,EAAAsK,YAAA,CAAqByN,CAArB,CAA+Bm+B,EAA/B,CACAl2C,EAAAqK,SAAA,CAAkB0N,CAAlB,CAA4Bo+B,EAA5B,CACAjC,EAAA8B,UAAA,EAL0B,CAoB5B,KAAAQ,cAAA,CAAqB8a,QAAQ,EAAG,CAC9Bzb,CAAAwa,SAAA,CAAgB,CAAA,CAChBxa,EAAAua,WAAA,CAAkB,CAAA,CAClBpwD,EAAAs2C,SAAA,CAAkBv+B,CAAlB;AA3YkBw5C,cA2YlB,CA1YgBC,YA0YhB,CAH8B,CAiBhC,KAAAC,YAAA,CAAmBC,QAAQ,EAAG,CAC5B7b,CAAAwa,SAAA,CAAgB,CAAA,CAChBxa,EAAAua,WAAA,CAAkB,CAAA,CAClBpwD,EAAAs2C,SAAA,CAAkBv+B,CAAlB,CA3ZgBy5C,YA2ZhB,CA5ZkBD,cA4ZlB,CAH4B,CAiE9B,KAAAxc,mBAAA,CAA0B4c,QAAQ,EAAG,CACnC7uD,CAAAgR,OAAA,CAAgB48C,CAAhB,CACA7a,EAAAsB,WAAA,CAAkBtB,CAAA+b,yBAClB/b,EAAA4B,QAAA,EAHmC,CAkBrC,KAAAmC,UAAA,CAAiBiY,QAAQ,EAAG,CAE1B,GAAI,CAAA7kE,CAAA,CAAS6oD,CAAAoa,YAAT,CAAJ,EAAkC,CAAA9oB,KAAA,CAAM0O,CAAAoa,YAAN,CAAlC,CAAA,CASA,IAAIvD,EAAa7W,CAAAqa,gBAAjB,CAEI4B,EAAYjc,CAAAlB,OAFhB,CAGIod,EAAiBlc,CAAAoa,YAHrB,CAKI+B,EAAenc,CAAAoD,SAAf+Y,EAAgCnc,CAAAoD,SAAA+Y,aAEpCnc,EAAAoc,gBAAA,CAAqBvF,CAArB,CAZgB7W,CAAA+b,yBAYhB,CAA4C,QAAQ,CAACM,CAAD,CAAW,CAGxDF,CAAL,EAAqBF,CAArB,GAAmCI,CAAnC,GAKErc,CAAAoa,YAEA,CAFmBiC,CAAA,CAAWxF,CAAX,CAAwB7iE,CAE3C,CAAIgsD,CAAAoa,YAAJ,GAAyB8B,CAAzB,EACElc,CAAAsc,oBAAA,EARJ,CAH6D,CAA/D,CAhBA,CAF0B,CAoC5B;IAAAF,gBAAA,CAAuBG,QAAQ,CAAC1F,CAAD,CAAaC,CAAb,CAAwB0F,CAAxB,CAAsC,CAmCnEC,QAASA,EAAqB,EAAG,CAC/B,IAAIC,EAAsB,CAAA,CAC1BhoE,EAAA,CAAQsrD,CAAA6D,YAAR,CAA0B,QAAQ,CAAC8Y,CAAD,CAAYp/D,CAAZ,CAAkB,CAClD,IAAIpE,EAASwjE,CAAA,CAAU9F,CAAV,CAAsBC,CAAtB,CACb4F,EAAA,CAAsBA,CAAtB,EAA6CvjE,CAC7CysD,EAAA,CAAYroD,CAAZ,CAAkBpE,CAAlB,CAHkD,CAApD,CAKA,OAAKujE,EAAL,CAMO,CAAA,CANP,EACEhoE,CAAA,CAAQsrD,CAAAsa,iBAAR,CAA+B,QAAQ,CAACxiC,CAAD,CAAIv6B,CAAJ,CAAU,CAC/CqoD,CAAA,CAAYroD,CAAZ,CAAkB,IAAlB,CAD+C,CAAjD,CAGO,CAAA,CAAA,CAJT,CAP+B,CAgBjCq/D,QAASA,EAAsB,EAAG,CAChC,IAAIC,EAAoB,EAAxB,CACIR,EAAW,CAAA,CACf3nE,EAAA,CAAQsrD,CAAAsa,iBAAR,CAA+B,QAAQ,CAACqC,CAAD,CAAYp/D,CAAZ,CAAkB,CACvD,IAAIu4B,EAAU6mC,CAAA,CAAU9F,CAAV,CAAsBC,CAAtB,CACd,IAAmBhhC,CAAAA,CAAnB,EA3gsBQ,CAAAhhC,CAAA,CA2gsBWghC,CA3gsBA9I,KAAX,CA2gsBR,CACE,KAAMy2B,GAAA,CAAe,kBAAf,CAC0E3tB,CAD1E,CAAN,CAGF8vB,CAAA,CAAYroD,CAAZ,CAAkBvJ,CAAlB,CACA6oE,EAAA3jE,KAAA,CAAuB48B,CAAA9I,KAAA,CAAa,QAAQ,EAAG,CAC7C44B,CAAA,CAAYroD,CAAZ,CAAkB,CAAA,CAAlB,CAD6C,CAAxB,CAEpB,QAAQ,CAAC6c,CAAD,CAAQ,CACjBiiD,CAAA,CAAW,CAAA,CACXzW,EAAA,CAAYroD,CAAZ,CAAkB,CAAA,CAAlB,CAFiB,CAFI,CAAvB,CAPuD,CAAzD,CAcKs/D,EAAAxoE,OAAL,CAGE4X,CAAAggC,IAAA,CAAO4wB,CAAP,CAAA7vC,KAAA,CAA+B,QAAQ,EAAG,CACxC8vC,CAAA,CAAeT,CAAf,CADwC,CAA1C,CAEGzlE,CAFH,CAHF,CACEkmE,CAAA,CAAe,CAAA,CAAf,CAlB8B,CA0BlClX,QAASA,EAAW,CAACroD,CAAD,CAAOkoD,CAAP,CAAgB,CAC9BsX,CAAJ,GAA6BzB,CAA7B,EACEtb,CAAAF,aAAA,CAAkBviD,CAAlB,CAAwBkoD,CAAxB,CAFgC,CAMpCqX,QAASA,EAAc,CAACT,CAAD,CAAW,CAC5BU,CAAJ,GAA6BzB,CAA7B,EAEEkB,CAAA,CAAaH,CAAb,CAH8B,CAlFlCf,CAAA,EACA,KAAIyB;AAAuBzB,CAa3B0B,UAA2B,EAAG,CAC5B,IAAIC,EAAWjd,CAAAsD,aAAX2Z,EAAgC,OACpC,IAAInC,CAAJ,GAAoB9mE,CAApB,CACE4xD,CAAA,CAAYqX,CAAZ,CAAsB,IAAtB,CADF,KAaE,OAVKnC,EAUEA,GATLpmE,CAAA,CAAQsrD,CAAA6D,YAAR,CAA0B,QAAQ,CAAC/rB,CAAD,CAAIv6B,CAAJ,CAAU,CAC1CqoD,CAAA,CAAYroD,CAAZ,CAAkB,IAAlB,CAD0C,CAA5C,CAGA,CAAA7I,CAAA,CAAQsrD,CAAAsa,iBAAR,CAA+B,QAAQ,CAACxiC,CAAD,CAAIv6B,CAAJ,CAAU,CAC/CqoD,CAAA,CAAYroD,CAAZ,CAAkB,IAAlB,CAD+C,CAAjD,CAMKu9D,EADPlV,CAAA,CAAYqX,CAAZ,CAAsBnC,CAAtB,CACOA,CAAAA,CAET,OAAO,CAAA,CAjBqB,CAA9BkC,CAVK,EAAL,CAIKP,CAAA,EAAL,CAIAG,CAAA,EAJA,CACEE,CAAA,CAAe,CAAA,CAAf,CALF,CACEA,CAAA,CAAe,CAAA,CAAf,CANiE,CAsGrE,KAAAzd,iBAAA,CAAwB6d,QAAQ,EAAG,CACjC,IAAIpG,EAAY9W,CAAAsB,WAEhBr0C,EAAAgR,OAAA,CAAgB48C,CAAhB,CAKA,IAAI7a,CAAA+b,yBAAJ,GAAsCjF,CAAtC,EAAkE,EAAlE,GAAoDA,CAApD,EAAyE9W,CAAAuB,sBAAzE,CAGAvB,CAAA+b,yBAMA,CANgCjF,CAMhC,CAHI9W,CAAAnB,UAGJ,EAFE,IAAAsB,UAAA,EAEF,CAAA,IAAAgd,mBAAA,EAjBiC,CAoBnC,KAAAA,mBAAA,CAA0BC,QAAQ,EAAG,CAEnC,IAAIvG,EADY7W,CAAA+b,yBAIhB,IAFAjB,CAEA;AAFc9jE,CAAA,CAAY6/D,CAAZ,CAAA,CAA0B7iE,CAA1B,CAAsC,CAAA,CAEpD,CACE,IAAS,IAAAsB,EAAI,CAAb,CAAgBA,CAAhB,CAAoB0qD,CAAAuD,SAAAlvD,OAApB,CAA0CiB,CAAA,EAA1C,CAEE,GADAuhE,CACI,CADS7W,CAAAuD,SAAA,CAAcjuD,CAAd,CAAA,CAAiBuhE,CAAjB,CACT,CAAA7/D,CAAA,CAAY6/D,CAAZ,CAAJ,CAA6B,CAC3BiE,CAAA,CAAc,CAAA,CACd,MAF2B,CAM7B3jE,CAAA,CAAS6oD,CAAAoa,YAAT,CAAJ,EAAkC9oB,KAAA,CAAM0O,CAAAoa,YAAN,CAAlC,GAEEpa,CAAAoa,YAFF,CAEqBO,CAAA,CAAWpyC,CAAX,CAFrB,CAIA,KAAI2zC,EAAiBlc,CAAAoa,YAArB,CACI+B,EAAenc,CAAAoD,SAAf+Y,EAAgCnc,CAAAoD,SAAA+Y,aACpCnc,EAAAqa,gBAAA,CAAuBxD,CAEnBsF,EAAJ,GACEnc,CAAAoa,YAkBA,CAlBmBvD,CAkBnB,CAAI7W,CAAAoa,YAAJ,GAAyB8B,CAAzB,EACElc,CAAAsc,oBAAA,EApBJ,CAOAtc,EAAAoc,gBAAA,CAAqBvF,CAArB,CAAiC7W,CAAA+b,yBAAjC,CAAgE,QAAQ,CAACM,CAAD,CAAW,CAC5EF,CAAL,GAKEnc,CAAAoa,YAMF,CANqBiC,CAAA,CAAWxF,CAAX,CAAwB7iE,CAM7C,CAAIgsD,CAAAoa,YAAJ,GAAyB8B,CAAzB,EACElc,CAAAsc,oBAAA,EAZF,CADiF,CAAnF,CA7BmC,CA+CrC,KAAAA,oBAAA,CAA2Be,QAAQ,EAAG,CACpCzC,CAAA,CAAWryC,CAAX,CAAmBy3B,CAAAoa,YAAnB,CACA1lE,EAAA,CAAQsrD,CAAA+Y,qBAAR,CAAmC,QAAQ,CAACz9C,CAAD,CAAW,CACpD,GAAI,CACFA,CAAA,EADE,CAEF,MAAO3f,CAAP,CAAU,CACVkP,CAAA,CAAkBlP,CAAlB,CADU,CAHwC,CAAtD,CAFoC,CAmDtC;IAAA6lD,cAAA,CAAqB8b,QAAQ,CAAC7nE,CAAD,CAAQ6xD,CAAR,CAAiB,CAC5CtH,CAAAsB,WAAA,CAAkB7rD,CACbuqD,EAAAoD,SAAL,EAAsBma,CAAAvd,CAAAoD,SAAAma,gBAAtB,EACEvd,CAAAwd,0BAAA,CAA+BlW,CAA/B,CAH0C,CAO9C,KAAAkW,0BAAA,CAAiCC,QAAQ,CAACnW,CAAD,CAAU,CAAA,IAC7CoW,EAAgB,CAD6B,CAE7Cp/C,EAAU0hC,CAAAoD,SAGV9kC,EAAJ,EAAernB,CAAA,CAAUqnB,CAAAq/C,SAAV,CAAf,GACEA,CACA,CADWr/C,CAAAq/C,SACX,CAAIxmE,CAAA,CAASwmE,CAAT,CAAJ,CACED,CADF,CACkBC,CADlB,CAEWxmE,CAAA,CAASwmE,CAAA,CAASrW,CAAT,CAAT,CAAJ,CACLoW,CADK,CACWC,CAAA,CAASrW,CAAT,CADX,CAEInwD,CAAA,CAASwmE,CAAA,CAAS,SAAT,CAAT,CAFJ,GAGLD,CAHK,CAGWC,CAAA,CAAS,SAAT,CAHX,CAJT,CAWA1wD,EAAAgR,OAAA,CAAgB48C,CAAhB,CACI6C,EAAJ,CACE7C,CADF,CACoB5tD,CAAA,CAAS,QAAQ,EAAG,CACpC+yC,CAAAX,iBAAA,EADoC,CAApB,CAEfqe,CAFe,CADpB,CAIW3xD,CAAAirB,QAAJ,CACLgpB,CAAAX,iBAAA,EADK,CAGL92B,CAAA5pB,OAAA,CAAc,QAAQ,EAAG,CACvBqhD,CAAAX,iBAAA,EADuB,CAAzB,CAxB+C,CAsCnD92B,EAAA9wB,OAAA,CAAcmmE,QAAqB,EAAG,CACpC,IAAI/G,EAAa8D,CAAA,CAAWpyC,CAAX,CAIjB,IAAIsuC,CAAJ,GAAmB7W,CAAAoa,YAAnB,CAAqC,CACnCpa,CAAAoa,YAAA,CAAmBpa,CAAAqa,gBAAnB,CAA0CxD,CAC1CiE,EAAA,CAAc9mE,CAMd,KARmC,IAI/B6pE;AAAa7d,CAAAgB,YAJkB,CAK/Bh9B,EAAM65C,CAAAxpE,OALyB,CAO/ByiE,EAAYD,CAChB,CAAO7yC,CAAA,EAAP,CAAA,CACE8yC,CAAA,CAAY+G,CAAA,CAAW75C,CAAX,CAAA,CAAgB8yC,CAAhB,CAEV9W,EAAAsB,WAAJ,GAAwBwV,CAAxB,GACE9W,CAAAsB,WAGA,CAHkBtB,CAAA+b,yBAGlB,CAHkDjF,CAGlD,CAFA9W,CAAA4B,QAAA,EAEA,CAAA5B,CAAAoc,gBAAA,CAAqBvF,CAArB,CAAiCC,CAAjC,CAA4ClgE,CAA5C,CAJF,CAXmC,CAmBrC,MAAOigE,EAxB6B,CAAtC,CA3kBiH,CAD3F,CAhvBxB,CA4/CIpuD,GAAmB,CAAC,YAAD,CAAe,QAAQ,CAACsD,CAAD,CAAa,CACzD,MAAO,CACLyV,SAAU,GADL,CAELD,QAAS,CAAC,SAAD,CAAY,QAAZ,CAAsB,kBAAtB,CAFJ,CAGL/gB,WAAY25D,EAHP,CAOL74C,SAAU,CAPL,CAQL5iB,QAASo/D,QAAuB,CAACzlE,CAAD,CAAU,CAExCA,CAAAmc,SAAA,CAAiB6rC,EAAjB,CAAA7rC,SAAA,CAp+BgBknD,cAo+BhB,CAAAlnD,SAAA,CAAoEkxC,EAApE,CAEA,OAAO,CACLl+B,IAAKu2C,QAAuB,CAACt/D,CAAD,CAAQpG,CAAR,CAAiBN,CAAjB,CAAuB2/D,CAAvB,CAA8B,CAAA,IACpDsG,EAAYtG,CAAA,CAAM,CAAN,CADwC,CAEpDuG,EAAWvG,CAAA,CAAM,CAAN,CAAXuG,EAAuB1f,EAE3Byf,EAAAjD,aAAA,CAAuBrD,CAAA,CAAM,CAAN,CAAvB,EAAmCA,CAAA,CAAM,CAAN,CAAAtU,SAAnC,CAGA6a,EAAAhf,YAAA,CAAqB+e,CAArB,CAEAjmE,EAAAuxB,SAAA,CAAc,MAAd,CAAsB,QAAQ,CAACyF,CAAD,CAAW,CACnCivC,CAAArf,MAAJ,GAAwB5vB,CAAxB,EACEkvC,CAAAze,gBAAA,CAAyBwe,CAAzB;AAAoCjvC,CAApC,CAFqC,CAAzC,CAMAtwB,EAAAwrB,IAAA,CAAU,UAAV,CAAsB,QAAQ,EAAG,CAC/Bg0C,CAAAre,eAAA,CAAwBoe,CAAxB,CAD+B,CAAjC,CAfwD,CADrD,CAoBLv2C,KAAMy2C,QAAwB,CAACz/D,CAAD,CAAQpG,CAAR,CAAiBN,CAAjB,CAAuB2/D,CAAvB,CAA8B,CAC1D,IAAIsG,EAAYtG,CAAA,CAAM,CAAN,CAChB,IAAIsG,CAAA5a,SAAJ,EAA0B4a,CAAA5a,SAAA+a,SAA1B,CACE9lE,CAAAgI,GAAA,CAAW29D,CAAA5a,SAAA+a,SAAX,CAAwC,QAAQ,CAAC/c,CAAD,CAAK,CACnD4c,CAAAR,0BAAA,CAAoCpc,CAApC,EAA0CA,CAAA/wC,KAA1C,CADmD,CAArD,CAKFhY,EAAAgI,GAAA,CAAW,MAAX,CAAmB,QAAQ,CAAC+gD,CAAD,CAAK,CAC1B4c,CAAAxD,SAAJ,GAEIzuD,CAAAirB,QAAJ,CACEv4B,CAAAjH,WAAA,CAAiBwmE,CAAApC,YAAjB,CADF,CAGEn9D,CAAAE,OAAA,CAAaq/D,CAAApC,YAAb,CALF,CAD8B,CAAhC,CAR0D,CApBvD,CAJiC,CARrC,CADkD,CAApC,CA5/CvB,CAojDIwC,GAAiB,uBApjDrB,CA4sDIv0D,GAA0BA,QAAQ,EAAG,CACvC,MAAO,CACL2X,SAAU,GADL,CAELhhB,WAAY,CAAC,QAAD,CAAW,QAAX,CAAqB,QAAQ,CAAC+nB,CAAD,CAASC,CAAT,CAAiB,CACxD,IAAI61C,EAAO,IACX,KAAAjb,SAAA,CAAgB76B,CAAA8oB,MAAA,CAAa7oB,CAAA5e,eAAb,CAEZ,KAAAw5C,SAAA+a,SAAJ,GAA+BnqE,CAA/B,EACE,IAAAovD,SAAAma,gBAEA;AAFgC,CAAA,CAEhC,CAAA,IAAAna,SAAA+a,SAAA,CAAyB5uD,CAAA,CAAK,IAAA6zC,SAAA+a,SAAAniE,QAAA,CAA+BoiE,EAA/B,CAA+C,QAAQ,EAAG,CACtFC,CAAAjb,SAAAma,gBAAA,CAAgC,CAAA,CAChC,OAAO,GAF+E,CAA1D,CAAL,CAH3B,EAQE,IAAAna,SAAAma,gBARF,CAQkC,CAAA,CAZsB,CAA9C,CAFP,CADgC,CA5sDzC,CA42DIl2D,GAAyB62C,EAAA,CAAY,CAAEp5B,SAAU,CAAA,CAAZ,CAAkBxD,SAAU,GAA5B,CAAZ,CA52D7B,CA0hEI/Z,GAAuB,CAAC,SAAD,CAAY,cAAZ,CAA4B,QAAQ,CAAC+xC,CAAD,CAAUruC,CAAV,CAAwB,CAAA,IACjFqzD,EAAQ,KADyE,CAEjFC,EAAU,oBAEd,OAAO,CACL/8C,SAAU,IADL,CAEL5C,KAAMA,QAAQ,CAACngB,CAAD,CAAQpG,CAAR,CAAiBN,CAAjB,CAAuB,CA2CnCymE,QAASA,EAAiB,CAACC,CAAD,CAAU,CAClCpmE,CAAAu1B,KAAA,CAAa6wC,CAAb,EAAwB,EAAxB,CADkC,CA3CD,IAC/BC,EAAY3mE,CAAA6jC,MADmB,CAE/B+iC,EAAU5mE,CAAAytB,MAAAuQ,KAAV4oC,EAA6BtmE,CAAAN,KAAA,CAAaA,CAAAytB,MAAAuQ,KAAb,CAFE,CAG/BjoB,EAAS/V,CAAA+V,OAATA,EAAwB,CAHO,CAI/B8wD,EAAQngE,CAAA4yC,MAAA,CAAYstB,CAAZ,CAARC,EAAgC,EAJD,CAK/BC,EAAc,EALiB,CAM/B1tC,EAAclmB,CAAAkmB,YAAA,EANiB,CAO/BC,EAAYnmB,CAAAmmB,UAAA,EAPmB,CAQ/B0tC,EAAmB3tC,CAAnB2tC,CAAiCJ,CAAjCI,CAA6C,GAA7CA,CAAmDhxD,CAAnDgxD,CAA4D1tC,CAR7B,CAS/B2tC,EAAe//D,EAAApI,KATgB,CAU/BooE,CAEJtqE,EAAA,CAAQqD,CAAR,CAAc,QAAQ,CAACw6B,CAAD,CAAa0sC,CAAb,CAA4B,CAChD,IAAIC;AAAWX,CAAA5vD,KAAA,CAAaswD,CAAb,CACXC,EAAJ,GACMC,CACJ,EADeD,CAAA,CAAS,CAAT,CAAA,CAAc,GAAd,CAAoB,EACnC,EADyC5mE,CAAA,CAAU4mE,CAAA,CAAS,CAAT,CAAV,CACzC,CAAAN,CAAA,CAAMO,CAAN,CAAA,CAAiB9mE,CAAAN,KAAA,CAAaA,CAAAytB,MAAA,CAAWy5C,CAAX,CAAb,CAFnB,CAFgD,CAAlD,CAOAvqE,EAAA,CAAQkqE,CAAR,CAAe,QAAQ,CAACrsC,CAAD,CAAa19B,CAAb,CAAkB,CACvCgqE,CAAA,CAAYhqE,CAAZ,CAAA,CAAmBoW,CAAA,CAAasnB,CAAAv2B,QAAA,CAAmBsiE,CAAnB,CAA0BQ,CAA1B,CAAb,CADoB,CAAzC,CAKArgE,EAAAhH,OAAA,CAAainE,CAAb,CAAwBU,QAA+B,CAACxlD,CAAD,CAAS,CAC1DgiB,CAAAA,CAAQ0e,UAAA,CAAW1gC,CAAX,CACZ,KAAIylD,EAAa/tB,KAAA,CAAM1V,CAAN,CAEZyjC,EAAL,EAAqBzjC,CAArB,GAA8BgjC,EAA9B,GAGEhjC,CAHF,CAGU0d,CAAAlb,UAAA,CAAkBxC,CAAlB,CAA0B9tB,CAA1B,CAHV,CAQK8tB,EAAL,GAAeojC,CAAf,EAA+BK,CAA/B,EAA6C/tB,KAAA,CAAM0tB,CAAN,CAA7C,GACED,CAAA,EAEA,CADAA,CACA,CADetgE,CAAAhH,OAAA,CAAaonE,CAAA,CAAYjjC,CAAZ,CAAb,CAAiC4iC,CAAjC,CACf,CAAAQ,CAAA,CAAYpjC,CAHd,CAZ8D,CAAhE,CAxBmC,CAFhC,CAJ8E,CAA5D,CA1hE3B,CA02EIn0B,GAAoB,CAAC,QAAD,CAAW,UAAX,CAAuB,QAAQ,CAACoE,CAAD,CAAS1B,CAAT,CAAmB,CAExE,IAAIm1D,EAAiBrrE,CAAA,CAAO,UAAP,CAArB,CAEIsrE,EAAcA,QAAQ,CAAC9gE,CAAD,CAAQhG,CAAR,CAAe+mE,CAAf,CAAgC/pE,CAAhC,CAAuCgqE,CAAvC,CAAsD5qE,CAAtD,CAA2D6qE,CAA3D,CAAwE,CAEhGjhE,CAAA,CAAM+gE,CAAN,CAAA,CAAyB/pE,CACrBgqE,EAAJ,GAAmBhhE,CAAA,CAAMghE,CAAN,CAAnB,CAA0C5qE,CAA1C,CACA4J,EAAAwmD,OAAA,CAAexsD,CACfgG,EAAAkhE,OAAA,CAA0B,CAA1B,GAAgBlnE,CAChBgG,EAAAmhE,MAAA,CAAennE,CAAf,GAA0BinE,CAA1B,CAAwC,CACxCjhE,EAAAohE,QAAA,CAAgB,EAAEphE,CAAAkhE,OAAF,EAAkBlhE,CAAAmhE,MAAlB,CAEhBnhE,EAAAqhE,KAAA,CAAa,EAAErhE,CAAAshE,MAAF,CAA8B,CAA9B,IAAiBtnE,CAAjB,CAAuB,CAAvB,EATmF,CAsBlG,OAAO,CACL+oB,SAAU,GADL,CAEL4K,aAAc,CAAA,CAFT,CAGL/H,WAAY,SAHP;AAIL/C,SAAU,GAJL,CAKLwD,SAAU,CAAA,CALL,CAMLmG,MAAO,CAAA,CANF,CAOLvsB,QAASshE,QAAwB,CAAC99C,CAAD,CAAWsD,CAAX,CAAkB,CACjD,IAAI+M,EAAa/M,CAAAhe,SAAjB,CACIy4D,EAAqBlsE,CAAAm3B,cAAA,CAAuB,iBAAvB,CAA2CqH,CAA3C,CAAwD,GAAxD,CADzB,CAGIh5B,EAAQg5B,CAAAh5B,MAAA,CAAiB,4FAAjB,CAEZ,IAAKA,CAAAA,CAAL,CACE,KAAM+lE,EAAA,CAAe,MAAf,CACF/sC,CADE,CAAN,CAIF,IAAI2tC,EAAM3mE,CAAA,CAAM,CAAN,CAAV,CACI4mE,EAAM5mE,CAAA,CAAM,CAAN,CADV,CAEI6mE,EAAU7mE,CAAA,CAAM,CAAN,CAFd,CAGI8mE,EAAa9mE,CAAA,CAAM,CAAN,CAHjB,CAKAA,EAAQ2mE,CAAA3mE,MAAA,CAAU,wDAAV,CAER,IAAKA,CAAAA,CAAL,CACE,KAAM+lE,EAAA,CAAe,QAAf,CACFY,CADE,CAAN,CAGF,IAAIV,EAAkBjmE,CAAA,CAAM,CAAN,CAAlBimE,EAA8BjmE,CAAA,CAAM,CAAN,CAAlC,CACIkmE,EAAgBlmE,CAAA,CAAM,CAAN,CAEpB,IAAI6mE,CAAJ,GAAiB,CAAA,4BAAArhE,KAAA,CAAkCqhE,CAAlC,CAAjB,EACI,2FAAArhE,KAAA,CAAiGqhE,CAAjG,CADJ,EAEE,KAAMd,EAAA,CAAe,UAAf;AACJc,CADI,CAAN,CA3B+C,IA+B7CE,CA/B6C,CA+B3BC,CA/B2B,CA+BXC,CA/BW,CA+BOC,CA/BP,CAgC7CC,EAAe,CAACrzB,IAAK34B,EAAN,CAEf2rD,EAAJ,CACEC,CADF,CACqBz0D,CAAA,CAAOw0D,CAAP,CADrB,EAGEG,CAGA,CAHmBA,QAAQ,CAAC3rE,CAAD,CAAMY,CAAN,CAAa,CACtC,MAAOif,GAAA,CAAQjf,CAAR,CAD+B,CAGxC,CAAAgrE,CAAA,CAAiBA,QAAQ,CAAC5rE,CAAD,CAAM,CAC7B,MAAOA,EADsB,CANjC,CAWA,OAAO8rE,SAAqB,CAACp4C,CAAD,CAASrG,CAAT,CAAmBsD,CAAnB,CAA0Bw6B,CAA1B,CAAgCv3B,CAAhC,CAA6C,CAEnE63C,CAAJ,GACEC,CADF,CACmBA,QAAQ,CAAC1rE,CAAD,CAAMY,CAAN,CAAagD,CAAb,CAAoB,CAEvCgnE,CAAJ,GAAmBiB,CAAA,CAAajB,CAAb,CAAnB,CAAiD5qE,CAAjD,CACA6rE,EAAA,CAAalB,CAAb,CAAA,CAAgC/pE,CAChCirE,EAAAzb,OAAA,CAAsBxsD,CACtB,OAAO6nE,EAAA,CAAiB/3C,CAAjB,CAAyBm4C,CAAzB,CALoC,CAD/C,CAkBA,KAAIE,EAAev+D,EAAA,EAGnBkmB,EAAAyB,iBAAA,CAAwBm2C,CAAxB,CAA6BU,QAAuB,CAACrgD,CAAD,CAAa,CAAA,IAC3D/nB,CAD2D,CACpDpE,CADoD,CAE3DysE,EAAe5+C,CAAA,CAAS,CAAT,CAF4C,CAI3D6+C,CAJ2D,CAO3DC,EAAe3+D,EAAA,EAP4C,CAQ3D4+D,CAR2D,CAS3DpsE,CAT2D,CAStDY,CATsD,CAU3DyrE,CAV2D,CAY3DC,CAZ2D,CAa3Dp9D,CAb2D,CAc3Dq9D,CAGAhB,EAAJ,GACE73C,CAAA,CAAO63C,CAAP,CADF,CACoB5/C,CADpB,CAIA,IAAItsB,EAAA,CAAYssB,CAAZ,CAAJ,CACE2gD,CACA,CADiB3gD,CACjB,CAAA6gD,CAAA,CAAcd,CAAd,EAAgCC,CAFlC,KAGO,CACLa,CAAA,CAAcd,CAAd,EAAgCE,CAEhCU,EAAA,CAAiB,EACjB,KAASG,CAAT,GAAoB9gD,EAApB,CACMA,CAAAzrB,eAAA,CAA0BusE,CAA1B,CAAJ,EAA+D,GAA/D,EAA0CA,CAAAznE,OAAA,CAAe,CAAf,CAA1C,EACEsnE,CAAAjoE,KAAA,CAAoBooE,CAApB,CAGJH,EAAA9rE,KAAA,EATK,CAYP4rE,CAAA,CAAmBE,CAAA9sE,OACnB+sE,EAAA,CAAqB3oD,KAAJ,CAAUwoD,CAAV,CAGjB,KAAKxoE,CAAL,CAAa,CAAb,CAAgBA,CAAhB,CAAwBwoE,CAAxB,CAA0CxoE,CAAA,EAA1C,CAIE,GAHA5D,CAGI,CAHG2rB,CAAD,GAAgB2gD,CAAhB,CAAkC1oE,CAAlC,CAA0C0oE,CAAA,CAAe1oE,CAAf,CAG5C,CAFJhD,CAEI,CAFI+qB,CAAA,CAAW3rB,CAAX,CAEJ,CADJqsE,CACI,CADQG,CAAA,CAAYxsE,CAAZ,CAAiBY,CAAjB,CAAwBgD,CAAxB,CACR,CAAAmoE,CAAA,CAAaM,CAAb,CAAJ,CAEEn9D,CAGA,CAHQ68D,CAAA,CAAaM,CAAb,CAGR,CAFA,OAAON,CAAA,CAAaM,CAAb,CAEP,CADAF,CAAA,CAAaE,CAAb,CACA,CAD0Bn9D,CAC1B,CAAAq9D,CAAA,CAAe3oE,CAAf,CAAA,CAAwBsL,CAL1B,KAMO,CAAA,GAAIi9D,CAAA,CAAaE,CAAb,CAAJ,CAKL,KAHAxsE,EAAA,CAAQ0sE,CAAR;AAAwB,QAAQ,CAACr9D,CAAD,CAAQ,CAClCA,CAAJ,EAAaA,CAAAtF,MAAb,GAA0BmiE,CAAA,CAAa78D,CAAAob,GAAb,CAA1B,CAAmDpb,CAAnD,CADsC,CAAxC,CAGM,CAAAu7D,CAAA,CAAe,OAAf,CAEF/sC,CAFE,CAEU2uC,CAFV,CAEqBzrE,CAFrB,CAAN,CAKA2rE,CAAA,CAAe3oE,CAAf,CAAA,CAAwB,CAAC0mB,GAAI+hD,CAAL,CAAgBziE,MAAOzK,CAAvB,CAAkCyH,MAAOzH,CAAzC,CACxBgtE,EAAA,CAAaE,CAAb,CAAA,CAA0B,CAAA,CAXrB,CAgBT,IAASK,CAAT,GAAqBX,EAArB,CAAmC,CACjC78D,CAAA,CAAQ68D,CAAA,CAAaW,CAAb,CACRpyC,EAAA,CAAmBntB,EAAA,CAAc+B,CAAAtI,MAAd,CACnB0O,EAAAuhD,MAAA,CAAev8B,CAAf,CACA,IAAIA,CAAA,CAAiB,CAAjB,CAAAhd,WAAJ,CAGE,IAAK1Z,CAAW,CAAH,CAAG,CAAApE,CAAA,CAAS86B,CAAA96B,OAAzB,CAAkDoE,CAAlD,CAA0DpE,CAA1D,CAAkEoE,CAAA,EAAlE,CACE02B,CAAA,CAAiB12B,CAAjB,CAAA,aAAA,CAAsC,CAAA,CAG1CsL,EAAAtF,MAAAwC,SAAA,EAXiC,CAenC,IAAKxI,CAAL,CAAa,CAAb,CAAgBA,CAAhB,CAAwBwoE,CAAxB,CAA0CxoE,CAAA,EAA1C,CAKE,GAJA5D,CAII4J,CAJG+hB,CAAD,GAAgB2gD,CAAhB,CAAkC1oE,CAAlC,CAA0C0oE,CAAA,CAAe1oE,CAAf,CAI5CgG,CAHJhJ,CAGIgJ,CAHI+hB,CAAA,CAAW3rB,CAAX,CAGJ4J,CAFJsF,CAEItF,CAFI2iE,CAAA,CAAe3oE,CAAf,CAEJgG,CAAAsF,CAAAtF,MAAJ,CAAiB,CAIfsiE,CAAA,CAAWD,CAGX,GACEC,EAAA,CAAWA,CAAA3+D,YADb,OAES2+D,CAFT,EAEqBA,CAAA,aAFrB,CAIkBh9D,EApLrBtI,MAAA,CAAY,CAAZ,CAoLG,EAA4BslE,CAA5B,EAEE52D,CAAAwhD,KAAA,CAAc3pD,EAAA,CAAc+B,CAAAtI,MAAd,CAAd,CAA0C,IAA1C,CAAgDD,CAAA,CAAOslE,CAAP,CAAhD,CAEFA,EAAA,CAA2B/8D,CApL9BtI,MAAA,CAoL8BsI,CApLlBtI,MAAApH,OAAZ,CAAiC,CAAjC,CAqLGkrE,EAAA,CAAYx7D,CAAAtF,MAAZ,CAAyBhG,CAAzB,CAAgC+mE,CAAhC,CAAiD/pE,CAAjD,CAAwDgqE,CAAxD,CAAuE5qE,CAAvE,CAA4EosE,CAA5E,CAhBe,CAAjB,IAmBEx4C,EAAA,CAAY+4C,QAA2B,CAAC/lE,CAAD,CAAQgD,CAAR,CAAe,CACpDsF,CAAAtF,MAAA,CAAcA,CAEd,KAAIyD,EAAU+9D,CAAApwD,UAAA,CAA6B,CAAA,CAA7B,CACdpU,EAAA,CAAMA,CAAApH,OAAA,EAAN,CAAA,CAAwB6N,CAGxBiI,EAAAshD,MAAA,CAAehwD,CAAf;AAAsB,IAAtB,CAA4BD,CAAA,CAAOslE,CAAP,CAA5B,CACAA,EAAA,CAAe5+D,CAIf6B,EAAAtI,MAAA,CAAcA,CACdulE,EAAA,CAAaj9D,CAAAob,GAAb,CAAA,CAAyBpb,CACzBw7D,EAAA,CAAYx7D,CAAAtF,MAAZ,CAAyBhG,CAAzB,CAAgC+mE,CAAhC,CAAiD/pE,CAAjD,CAAwDgqE,CAAxD,CAAuE5qE,CAAvE,CAA4EosE,CAA5E,CAdoD,CAAtD,CAkBJL,EAAA,CAAeI,CA3HgD,CAAjE,CAvBuE,CA7CxB,CAP9C,CA1BiE,CAAlD,CA12ExB,CA+uFIr5D,GAAkB,CAAC,UAAD,CAAa,QAAQ,CAACwC,CAAD,CAAW,CACpD,MAAO,CACLqX,SAAU,GADL,CAEL4K,aAAc,CAAA,CAFT,CAGLxN,KAAMA,QAAQ,CAACngB,CAAD,CAAQpG,CAAR,CAAiBN,CAAjB,CAAuB,CACnC0G,CAAAhH,OAAA,CAAaM,CAAA2P,OAAb,CAA0B+5D,QAA0B,CAAChsE,CAAD,CAAQ,CAK1D0U,CAAA,CAAS1U,CAAA,CAAQ,aAAR,CAAwB,UAAjC,CAAA,CAA6C4C,CAA7C,CAxKYqpE,SAwKZ,CAAqE,CACnEC,YAxKsBC,iBAuK6C,CAArE,CAL0D,CAA5D,CADmC,CAHhC,CAD6C,CAAhC,CA/uFtB,CAg5FI/6D,GAAkB,CAAC,UAAD,CAAa,QAAQ,CAACsD,CAAD,CAAW,CACpD,MAAO,CACLqX,SAAU,GADL,CAEL4K,aAAc,CAAA,CAFT,CAGLxN,KAAMA,QAAQ,CAACngB,CAAD,CAAQpG,CAAR,CAAiBN,CAAjB,CAAuB,CACnC0G,CAAAhH,OAAA,CAAaM,CAAA6O,OAAb,CAA0Bi7D,QAA0B,CAACpsE,CAAD,CAAQ,CAG1D0U,CAAA,CAAS1U,CAAA,CAAQ,UAAR,CAAqB,aAA9B,CAAA,CAA6C4C,CAA7C,CAvUYqpE,SAuUZ,CAAoE,CAClEC,YAvUsBC,iBAsU4C,CAApE,CAH0D,CAA5D,CADmC,CAHhC,CAD6C,CAAhC,CAh5FtB,CA88FI/5D,GAAmBq2C,EAAA,CAAY,QAAQ,CAACz/C,CAAD,CAAQpG,CAAR,CAAiBN,CAAjB,CAAuB,CAChE0G,CAAAurB,iBAAA,CAAuBjyB,CAAA6P,QAAvB;AAAqCk6D,QAA2B,CAACC,CAAD,CAAYC,CAAZ,CAAuB,CACjFA,CAAJ,EAAkBD,CAAlB,GAAgCC,CAAhC,EACEttE,CAAA,CAAQstE,CAAR,CAAmB,QAAQ,CAACjnE,CAAD,CAAMuK,CAAN,CAAa,CAAEjN,CAAAqvD,IAAA,CAAYpiD,CAAZ,CAAmB,EAAnB,CAAF,CAAxC,CAEEy8D,EAAJ,EAAe1pE,CAAAqvD,IAAA,CAAYqa,CAAZ,CAJsE,CAAvF,CADgE,CAA3C,CA98FvB,CAulGIh6D,GAAoB,CAAC,UAAD,CAAa,QAAQ,CAACoC,CAAD,CAAW,CACtD,MAAO,CACLqX,SAAU,IADL,CAELD,QAAS,UAFJ,CAKL/gB,WAAY,CAAC,QAAD,CAAWyhE,QAA2B,EAAG,CACpD,IAAAC,MAAA,CAAa,EADuC,CAAzC,CALP,CAQLtjD,KAAMA,QAAQ,CAACngB,CAAD,CAAQpG,CAAR,CAAiBN,CAAjB,CAAuBkqE,CAAvB,CAA2C,CAAA,IAEnDE,EAAsB,EAF6B,CAGnDC,EAAmB,EAHgC,CAInDC,EAA0B,EAJyB,CAKnDC,EAAiB,EALkC,CAOnDC,EAAgBA,QAAQ,CAAC/pE,CAAD,CAAQC,CAAR,CAAe,CACvC,MAAO,SAAQ,EAAG,CAAED,CAAAG,OAAA,CAAaF,CAAb,CAAoB,CAApB,CAAF,CADqB,CAI3CgG,EAAAhH,OAAA,CAVgBM,CAAA+P,SAUhB,EAViC/P,CAAAsI,GAUjC,CAAwBmiE,QAA4B,CAAC/sE,CAAD,CAAQ,CAAA,IACtDH,CADsD,CACnDW,CACFX,EAAA,CAAI,CAAT,KAAYW,CAAZ,CAAiBosE,CAAAhuE,OAAjB,CAAiDiB,CAAjD,CAAqDW,CAArD,CAAyD,EAAEX,CAA3D,CACE6U,CAAA8T,OAAA,CAAgBokD,CAAA,CAAwB/sE,CAAxB,CAAhB,CAIGA,EAAA,CAFL+sE,CAAAhuE,OAEK,CAF4B,CAEjC,KAAY4B,CAAZ,CAAiBqsE,CAAAjuE,OAAjB,CAAwCiB,CAAxC,CAA4CW,CAA5C,CAAgD,EAAEX,CAAlD,CAAqD,CACnD,IAAI4yD,EAAWlmD,EAAA,CAAcogE,CAAA,CAAiB9sE,CAAjB,CAAAmG,MAAd,CACf6mE,EAAA,CAAehtE,CAAf,CAAA2L,SAAA,EAEA+rB,EADcq1C,CAAA,CAAwB/sE,CAAxB,CACd03B,CAD2C7iB,CAAAuhD,MAAA,CAAexD,CAAf,CAC3Cl7B,MAAA,CAAau1C,CAAA,CAAcF,CAAd,CAAuC/sE,CAAvC,CAAb,CAJmD,CAOrD8sE,CAAA/tE,OAAA,CAA0B,CAC1BiuE,EAAAjuE,OAAA,CAAwB,CAExB,EAAK8tE,CAAL;AAA2BF,CAAAC,MAAA,CAAyB,GAAzB,CAA+BzsE,CAA/B,CAA3B,EAAoEwsE,CAAAC,MAAA,CAAyB,GAAzB,CAApE,GACExtE,CAAA,CAAQytE,CAAR,CAA6B,QAAQ,CAACM,CAAD,CAAqB,CACxDA,CAAAp+C,WAAA,CAA8B,QAAQ,CAACq+C,CAAD,CAAcC,CAAd,CAA6B,CACjEL,CAAAppE,KAAA,CAAoBypE,CAApB,CACA,KAAIC,EAASH,CAAApqE,QACbqqE,EAAA,CAAYA,CAAAruE,OAAA,EAAZ,CAAA,CAAoCN,CAAAm3B,cAAA,CAAuB,qBAAvB,CAGpCk3C,EAAAlpE,KAAA,CAFY6K,CAAEtI,MAAOinE,CAAT3+D,CAEZ,CACAoG,EAAAshD,MAAA,CAAeiX,CAAf,CAA4BE,CAAAnsE,OAAA,EAA5B,CAA6CmsE,CAA7C,CAPiE,CAAnE,CADwD,CAA1D,CAlBwD,CAA5D,CAXuD,CARpD,CAD+C,CAAhC,CAvlGxB,CA8oGI36D,GAAwBi2C,EAAA,CAAY,CACtC75B,WAAY,SAD0B,CAEtC/C,SAAU,IAF4B,CAGtCC,QAAS,WAH6B,CAItC6K,aAAc,CAAA,CAJwB,CAKtCxN,KAAMA,QAAQ,CAACngB,CAAD,CAAQpG,CAAR,CAAiBmsB,CAAjB,CAAwBw7B,CAAxB,CAA8Bv3B,CAA9B,CAA2C,CACvDu3B,CAAAkiB,MAAA,CAAW,GAAX,CAAiB19C,CAAAxc,aAAjB,CAAA,CAAwCg4C,CAAAkiB,MAAA,CAAW,GAAX,CAAiB19C,CAAAxc,aAAjB,CAAxC,EAAgF,EAChFg4C,EAAAkiB,MAAA,CAAW,GAAX,CAAiB19C,CAAAxc,aAAjB,CAAA9O,KAAA,CAA0C,CAAEmrB,WAAYoE,CAAd,CAA2BpwB,QAASA,CAApC,CAA1C,CAFuD,CALnB,CAAZ,CA9oG5B,CAypGI8P,GAA2B+1C,EAAA,CAAY,CACzC75B,WAAY,SAD6B,CAEzC/C,SAAU,IAF+B,CAGzCC,QAAS,WAHgC,CAIzC6K,aAAc,CAAA,CAJ2B;AAKzCxN,KAAMA,QAAQ,CAACngB,CAAD,CAAQpG,CAAR,CAAiBN,CAAjB,CAAuBioD,CAAvB,CAA6Bv3B,CAA7B,CAA0C,CACtDu3B,CAAAkiB,MAAA,CAAW,GAAX,CAAA,CAAmBliB,CAAAkiB,MAAA,CAAW,GAAX,CAAnB,EAAsC,EACtCliB,EAAAkiB,MAAA,CAAW,GAAX,CAAAhpE,KAAA,CAAqB,CAAEmrB,WAAYoE,CAAd,CAA2BpwB,QAASA,CAApC,CAArB,CAFsD,CALf,CAAZ,CAzpG/B,CA0tGIkQ,GAAwB21C,EAAA,CAAY,CACtC18B,SAAU,KAD4B,CAEtC5C,KAAMA,QAAQ,CAAC2J,CAAD,CAASrG,CAAT,CAAmBsG,CAAnB,CAA2BhoB,CAA3B,CAAuCioB,CAAvC,CAAoD,CAChE,GAAKA,CAAAA,CAAL,CACE,KAAMx0B,EAAA,CAAO,cAAP,CAAA,CAAuB,QAAvB,CAILsH,EAAA,CAAY2mB,CAAZ,CAJK,CAAN,CAOFuG,CAAA,CAAY,QAAQ,CAAChtB,CAAD,CAAQ,CAC1BymB,CAAAxmB,MAAA,EACAwmB,EAAArmB,OAAA,CAAgBJ,CAAhB,CAF0B,CAA5B,CATgE,CAF5B,CAAZ,CA1tG5B,CA6wGI0J,GAAkB,CAAC,gBAAD,CAAmB,QAAQ,CAACwH,CAAD,CAAiB,CAChE,MAAO,CACL6U,SAAU,GADL,CAELsD,SAAU,CAAA,CAFL,CAGLpmB,QAASA,QAAQ,CAACrG,CAAD,CAAUN,CAAV,CAAgB,CACd,kBAAjB,EAAIA,CAAAsY,KAAJ,EAIE1D,CAAAqI,IAAA,CAHkBjd,CAAAonB,GAGlB,CAFW9mB,CAAA,CAAQ,CAAR,CAAAu1B,KAEX,CAL6B,CAH5B,CADyD,CAA5C,CA7wGtB,CA4xGIi1C,GAAkB5uE,CAAA,CAAO,WAAP,CA5xGtB,CAq9GIoU,GAAqBtR,EAAA,CAAQ,CAC/ByqB,SAAU,GADqB,CAE/BsD,SAAU,CAAA,CAFqB,CAAR,CAr9GzB,CA29GIzf,GAAkB,CAAC,UAAD,CAAa,QAAb,CAAuB,QAAQ,CAAC2yD,CAAD,CAAansD,CAAb,CAAqB,CAAA,IAEpEi3D,EAAoB,wMAFgD;AAGpEC,EAAgB,CAACvhB,cAAe5qD,CAAhB,CAGpB,OAAO,CACL4qB,SAAU,GADL,CAELD,QAAS,CAAC,QAAD,CAAW,UAAX,CAFJ,CAGL/gB,WAAY,CAAC,UAAD,CAAa,QAAb,CAAuB,QAAvB,CAAiC,QAAQ,CAAC0hB,CAAD,CAAWqG,CAAX,CAAmBC,CAAnB,CAA2B,CAAA,IAC1E/tB,EAAO,IADmE,CAE1EuoE,EAAa,EAF6D,CAG1EC,EAAcF,CAH4D,CAK1EG,CAGJzoE,EAAA0oE,UAAA,CAAiB36C,CAAAhgB,QAGjB/N,EAAA2oE,KAAA,CAAYC,QAAQ,CAACC,CAAD,CAAeC,CAAf,CAA4BC,CAA5B,CAA4C,CAC9DP,CAAA,CAAcK,CAEdJ,EAAA,CAAgBM,CAH8C,CAOhE/oE,EAAAgpE,UAAA,CAAiBC,QAAQ,CAACjuE,CAAD,CAAQ4C,CAAR,CAAiB,CACxCqJ,EAAA,CAAwBjM,CAAxB,CAA+B,gBAA/B,CACAutE,EAAA,CAAWvtE,CAAX,CAAA,CAAoB,CAAA,CAEhBwtE,EAAA3hB,WAAJ,EAA8B7rD,CAA9B,GACEysB,CAAAnnB,IAAA,CAAatF,CAAb,CACA,CAAIytE,CAAAzsE,OAAA,EAAJ,EAA4BysE,CAAAzjD,OAAA,EAF9B,CAOIpnB,EAAJ,EAAeA,CAAA,CAAQ,CAAR,CAAAmF,aAAA,CAAwB,UAAxB,CAAf,GACEnF,CAAA,CAAQ,CAAR,CAAA6vD,SADF,CACwB,CAAA,CADxB,CAXwC,CAiB1CztD,EAAAkpE,aAAA,CAAoBC,QAAQ,CAACnuE,CAAD,CAAQ,CAC9B,IAAAouE,UAAA,CAAepuE,CAAf,CAAJ,GACE,OAAOutE,CAAA,CAAWvtE,CAAX,CACP,CAAIwtE,CAAA3hB,WAAJ,GAA+B7rD,CAA/B,EACE,IAAAquE,oBAAA,CAAyBruE,CAAzB,CAHJ,CADkC,CAUpCgF,EAAAqpE,oBAAA,CAA2BC,QAAQ,CAAChpE,CAAD,CAAM,CACnCipE,CAAAA;AAAa,IAAbA,CAAoBtvD,EAAA,CAAQ3Z,CAAR,CAApBipE,CAAmC,IACvCd,EAAAnoE,IAAA,CAAkBipE,CAAlB,CACA9hD,EAAA6mC,QAAA,CAAiBma,CAAjB,CACAhhD,EAAAnnB,IAAA,CAAaipE,CAAb,CACAd,EAAAprE,KAAA,CAAmB,UAAnB,CAA+B,CAAA,CAA/B,CALuC,CASzC2C,EAAAopE,UAAA,CAAiBI,QAAQ,CAACxuE,CAAD,CAAQ,CAC/B,MAAOutE,EAAAjuE,eAAA,CAA0BU,CAA1B,CADwB,CAIjC8yB,EAAA0B,IAAA,CAAW,UAAX,CAAuB,QAAQ,EAAG,CAEhCxvB,CAAAqpE,oBAAA,CAA2BltE,CAFK,CAAlC,CA1D8E,CAApE,CAHP,CAmELgoB,KAAMA,QAAQ,CAACngB,CAAD,CAAQpG,CAAR,CAAiBN,CAAjB,CAAuB2/D,CAAvB,CAA8B,CA2C1CwM,QAASA,EAAa,CAACzlE,CAAD,CAAQ0lE,CAAR,CAAuBlB,CAAvB,CAAoCmB,CAApC,CAAgD,CACpEnB,CAAArhB,QAAA,CAAsByiB,QAAQ,EAAG,CAC/B,IAAIvN,EAAYmM,CAAA3hB,WAEZ8iB,EAAAP,UAAA,CAAqB/M,CAArB,CAAJ,EACMoM,CAAAzsE,OAAA,EAEJ,EAF4BysE,CAAAzjD,OAAA,EAE5B,CADA0kD,CAAAppE,IAAA,CAAkB+7D,CAAlB,CACA,CAAkB,EAAlB,GAAIA,CAAJ,EAAsBwN,CAAAxsE,KAAA,CAAiB,UAAjB,CAA6B,CAAA,CAA7B,CAHxB,EAKMd,CAAA,CAAY8/D,CAAZ,CAAJ,EAA8BwN,CAA9B,CACEH,CAAAppE,IAAA,CAAkB,EAAlB,CADF,CAGEqpE,CAAAN,oBAAA,CAA+BhN,CAA/B,CAX2B,CAgBjCqN,EAAA9jE,GAAA,CAAiB,QAAjB,CAA2B,QAAQ,EAAG,CACpC5B,CAAAE,OAAA,CAAa,QAAQ,EAAG,CAClBukE,CAAAzsE,OAAA,EAAJ,EAA4BysE,CAAAzjD,OAAA,EAC5BwjD,EAAAzhB,cAAA,CAA0B2iB,CAAAppE,IAAA,EAA1B,CAFsB,CAAxB,CADoC,CAAtC,CAjBoE,CAyBtEwpE,QAASA,EAAe,CAAC9lE,CAAD,CAAQ0lE,CAAR,CAAuBnkB,CAAvB,CAA6B,CACnD,IAAIwkB,CACJxkB;CAAA4B,QAAA,CAAeC,QAAQ,EAAG,CACxB,IAAI3pD,EAAQ,IAAI2c,EAAJ,CAAYmrC,CAAAsB,WAAZ,CACZ5sD,EAAA,CAAQyvE,CAAAnsE,KAAA,CAAmB,QAAnB,CAAR,CAAsC,QAAQ,CAACwN,CAAD,CAAS,CACrDA,CAAA0iD,SAAA,CAAkBjxD,CAAA,CAAUiB,CAAAwH,IAAA,CAAU8F,CAAA/P,MAAV,CAAV,CADmC,CAAvD,CAFwB,CAS1BgJ,EAAAhH,OAAA,CAAagtE,QAA4B,EAAG,CACrC3qE,EAAA,CAAO0qE,CAAP,CAAiBxkB,CAAAsB,WAAjB,CAAL,GACEkjB,CACA,CADW7qE,EAAA,CAAYqmD,CAAAsB,WAAZ,CACX,CAAAtB,CAAA4B,QAAA,EAFF,CAD0C,CAA5C,CAOAuiB,EAAA9jE,GAAA,CAAiB,QAAjB,CAA2B,QAAQ,EAAG,CACpC5B,CAAAE,OAAA,CAAa,QAAQ,EAAG,CACtB,IAAInG,EAAQ,EACZ9D,EAAA,CAAQyvE,CAAAnsE,KAAA,CAAmB,QAAnB,CAAR,CAAsC,QAAQ,CAACwN,CAAD,CAAS,CACjDA,CAAA0iD,SAAJ,EACE1vD,CAAAU,KAAA,CAAWsM,CAAA/P,MAAX,CAFmD,CAAvD,CAKAuqD,EAAAwB,cAAA,CAAmBhpD,CAAnB,CAPsB,CAAxB,CADoC,CAAtC,CAlBmD,CA+BrDksE,QAASA,EAAc,CAACjmE,CAAD,CAAQ0lE,CAAR,CAAuBnkB,CAAvB,CAA6B,CA2DlD2kB,QAASA,EAAc,CAACC,CAAD,CAAS/vE,CAAT,CAAcY,CAAd,CAAqB,CAC1CyhB,CAAA,CAAO2tD,CAAP,CAAA,CAAoBpvE,CAChBqvE,EAAJ,GAAa5tD,CAAA,CAAO4tD,CAAP,CAAb,CAA+BjwE,CAA/B,CACA,OAAO+vE,EAAA,CAAOnmE,CAAP,CAAcyY,CAAd,CAHmC,CAyD5C6tD,QAASA,EAAkB,CAACjO,CAAD,CAAY,CACrC,IAAIkO,CACJ,IAAI/c,CAAJ,CACE,GAAIgd,CAAJ,EAAexwE,CAAA,CAAQqiE,CAAR,CAAf,CAAmC,CAEjCkO,CAAA,CAAc,IAAInwD,EAAJ,CAAY,EAAZ,CACd,KAAS,IAAAqwD,EAAa,CAAtB,CAAyBA,CAAzB,CAAsCpO,CAAAziE,OAAtC,CAAwD6wE,CAAA,EAAxD,CAEEF,CAAAhwD,IAAA,CAAgB2vD,CAAA,CAAeM,CAAf,CAAwB,IAAxB,CAA8BnO,CAAA,CAAUoO,CAAV,CAA9B,CAAhB,CAAsE,CAAA,CAAtE,CAL+B,CAAnC,IAQEF,EAAA;AAAc,IAAInwD,EAAJ,CAAYiiD,CAAZ,CATlB,KAWWmO,EAAJ,GACLnO,CADK,CACO6N,CAAA,CAAeM,CAAf,CAAwB,IAAxB,CAA8BnO,CAA9B,CADP,CAIP,OAAOqO,SAAmB,CAACtwE,CAAD,CAAMY,CAAN,CAAa,CACrC,IAAI2vE,CAEFA,EAAA,CADEH,CAAJ,CACmBA,CADnB,CAEWI,CAAJ,CACYA,CADZ,CAGYtuE,CAGnB,OAAIkxD,EAAJ,CACShxD,CAAA,CAAU+tE,CAAAvlD,OAAA,CAAmBklD,CAAA,CAAeS,CAAf,CAA+BvwE,CAA/B,CAAoCY,CAApC,CAAnB,CAAV,CADT,CAGSqhE,CAHT,GAGuB6N,CAAA,CAAeS,CAAf,CAA+BvwE,CAA/B,CAAoCY,CAApC,CAbc,CAjBF,CAmCvC6vE,QAASA,EAAiB,EAAG,CACtBC,CAAL,GACE9mE,CAAAqqC,aAAA,CAAmB08B,CAAnB,CACA,CAAAD,CAAA,CAAkB,CAAA,CAFpB,CAD2B,CAmB7BE,QAASA,EAAc,CAACC,CAAD,CAAWC,CAAX,CAAkBC,CAAlB,CAAyB,CAC9CF,CAAA,CAASC,CAAT,CAAA,CAAkBD,CAAA,CAASC,CAAT,CAAlB,EAAqC,CACrCD,EAAA,CAASC,CAAT,CAAA,EAAoBC,CAAA,CAAQ,CAAR,CAAa,EAFa,CAKhDJ,QAASA,EAAM,EAAG,CAChBD,CAAA,CAAkB,CAAA,CADF,KAIZM,EAAe,CAAC,GAAG,EAAJ,CAJH,CAKZC,EAAmB,CAAC,EAAD,CALP,CAMZC,CANY,CAOZC,CAPY,CASZC,CATY,CASIC,CATJ,CASqBC,CACjCrP,EAAAA,CAAY9W,CAAAsB,WACZ3vB,EAAAA,CAASy0C,CAAA,CAAS3nE,CAAT,CAATkzB,EAA4B,EAXhB,KAYZx8B,EAAO2vE,CAAA,CA/hyBZ1vE,MAAAD,KAAA,CA+hyBiCw8B,CA/hyBjC,CAAAt8B,KAAA,EA+hyBY,CAA+Bs8B,CAZ1B,CAaZ98B,CAbY,CAcZY,CAdY,CAeCpB,CAfD,CAgBAoE,CAhBA,CAiBZitE,EAAW,EAEXP,EAAAA,CAAaJ,CAAA,CAAmBjO,CAAnB,CAnBD,KAoBZuP,EAAc,CAAA,CApBF,CAsBZhuE,CAtBY,CAwBZiuE,CAEJC,EAAA,CAAiB,EAGjB,KAAK9tE,CAAL,CAAa,CAAb,CAAgBpE,CAAA,CAASc,CAAAd,OAAT,CAAsBoE,CAAtB,CAA8BpE,CAA9C,CAAsDoE,CAAA,EAAtD,CAA+D,CAC7D5D,CAAA,CAAM4D,CACN,IAAIqsE,CAAJ,GACEjwE,CACI,CADEM,CAAA,CAAKsD,CAAL,CACF,CAAkB,GAAlB,GAAA5D,CAAAgF,OAAA,CAAW,CAAX,CAFN,EAE6B,QAE7BpE,EAAA,CAAQk8B,CAAA,CAAO98B,CAAP,CAERkxE,EAAA,CAAkBpB,CAAA,CAAe6B,CAAf,CAA0B3xE,CAA1B,CAA+BY,CAA/B,CAAlB,EAA2D,EAC3D,EAAMuwE,CAAN,CAAoBH,CAAA,CAAaE,CAAb,CAApB,IACEC,CACA,CADcH,CAAA,CAAaE,CAAb,CACd,CAD8C,EAC9C,CAAAD,CAAA5sE,KAAA,CAAsB6sE,CAAtB,CAFF,CAKA7d,EAAA,CAAWid,CAAA,CAAWtwE,CAAX,CAAgBY,CAAhB,CACX4wE,EAAA,CAAcA,CAAd,EAA6Bne,CAE7Byd,EAAA,CAAQhB,CAAA,CAAe8B,CAAf,CAA0B5xE,CAA1B,CAA+BY,CAA/B,CAGRkwE;CAAA,CAAQ1uE,CAAA,CAAU0uE,CAAV,CAAA,CAAmBA,CAAnB,CAA2B,EACnCW,EAAA,CAAWrB,CAAA,CAAUA,CAAA,CAAQxmE,CAAR,CAAeyY,CAAf,CAAV,CAAoC4tD,CAAA,CAAU3vE,CAAA,CAAKsD,CAAL,CAAV,CAAwBA,CACnEwsE,EAAJ,GACEsB,CAAA,CAAeD,CAAf,CADF,CAC6BzxE,CAD7B,CAIAmxE,EAAA9sE,KAAA,CAAiB,CAEfimB,GAAImnD,CAFW,CAGfX,MAAOA,CAHQ,CAIfzd,SAAUA,CAJK,CAAjB,CA1B6D,CAiC1DD,CAAL,GACMye,CAAJ,EAAgC,IAAhC,GAAkB5P,CAAlB,CAEE+O,CAAA,CAAa,EAAb,CAAA3nE,QAAA,CAAyB,CAACihB,GAAG,EAAJ,CAAQwmD,MAAM,EAAd,CAAkBzd,SAAS,CAACme,CAA5B,CAAzB,CAFF,CAGYA,CAHZ,EAKER,CAAA,CAAa,EAAb,CAAA3nE,QAAA,CAAyB,CAACihB,GAAG,GAAJ,CAASwmD,MAAM,EAAf,CAAmBzd,SAAS,CAAA,CAA5B,CAAzB,CANJ,CAWKye,EAAA,CAAa,CAAlB,KAAqBC,CAArB,CAAmCd,CAAAzxE,OAAnC,CACKsyE,CADL,CACkBC,CADlB,CAEKD,CAAA,EAFL,CAEmB,CAEjBZ,CAAA,CAAkBD,CAAA,CAAiBa,CAAjB,CAGlBX,EAAA,CAAcH,CAAA,CAAaE,CAAb,CAEVc,EAAAxyE,OAAJ,EAAgCsyE,CAAhC,EAEEV,CAMA,CANiB,CACf5tE,QAASyuE,CAAArrE,MAAA,EAAA1D,KAAA,CAA8B,OAA9B,CAAuCguE,CAAvC,CADM,CAEfJ,MAAOK,CAAAL,MAFQ,CAMjB,CAFAO,CAEA,CAFkB,CAACD,CAAD,CAElB,CADAY,CAAA3tE,KAAA,CAAuBgtE,CAAvB,CACA,CAAA/B,CAAAtoE,OAAA,CAAqBoqE,CAAA5tE,QAArB,CARF,GAUE6tE,CAIA,CAJkBW,CAAA,CAAkBF,CAAlB,CAIlB,CAHAV,CAGA,CAHiBC,CAAA,CAAgB,CAAhB,CAGjB,CAAID,CAAAN,MAAJ,EAA4BI,CAA5B,EACEE,CAAA5tE,QAAAN,KAAA,CAA4B,OAA5B,CAAqCkuE,CAAAN,MAArC,CAA4DI,CAA5D,CAfJ,CAmBAgB,EAAA,CAAc,IACTtuE,EAAA,CAAQ,CAAb,KAAgBpE,CAAhB,CAAyB2xE,CAAA3xE,OAAzB,CAA6CoE,CAA7C,CAAqDpE,CAArD,CAA6DoE,CAAA,EAA7D,CACE+M,CACA,CADSwgE,CAAA,CAAYvtE,CAAZ,CACT,CAAA,CAAK0tE,CAAL,CAAsBD,CAAA,CAAgBztE,CAAhB,CAAwB,CAAxB,CAAtB,GAEEsuE,CAWA,CAXcZ,CAAA9tE,QAWd,CAVI8tE,CAAAR,MAUJ,GAV6BngE,CAAAmgE,MAU7B,GATEF,CAAA,CAAeC,CAAf,CAAyBS,CAAAR,MAAzB,CAA+C,CAAA,CAA/C,CAGA,CAFAF,CAAA,CAAeC,CAAf,CAAyBlgE,CAAAmgE,MAAzB;AAAuC,CAAA,CAAvC,CAEA,CADAoB,CAAAn5C,KAAA,CAAiBu4C,CAAAR,MAAjB,CAAwCngE,CAAAmgE,MAAxC,CACA,CAAAoB,CAAAjvE,KAAA,CAAiB,OAAjB,CAA0BquE,CAAAR,MAA1B,CAMF,EAJIQ,CAAAhnD,GAIJ,GAJ0B3Z,CAAA2Z,GAI1B,EAHE4nD,CAAAhsE,IAAA,CAAgBorE,CAAAhnD,GAAhB,CAAoC3Z,CAAA2Z,GAApC,CAGF,CAAI4nD,CAAA,CAAY,CAAZ,CAAA7e,SAAJ,GAAgC1iD,CAAA0iD,SAAhC,GACE6e,CAAAjvE,KAAA,CAAiB,UAAjB,CAA8BquE,CAAAje,SAA9B,CAAwD1iD,CAAA0iD,SAAxD,CACA,CAAIxT,EAAJ,EAIEqyB,CAAAjvE,KAAA,CAAiB,UAAjB,CAA6BquE,CAAAje,SAA7B,CANJ,CAbF,GA0BoB,EAAlB,GAAI1iD,CAAA2Z,GAAJ,EAAwBunD,CAAxB,CAEEruE,CAFF,CAEYquE,CAFZ,CAOE3rE,CAAC1C,CAAD0C,CAAWisE,CAAAvrE,MAAA,EAAXV,KAAA,CACSyK,CAAA2Z,GADT,CAAArnB,KAAA,CAEU,UAFV,CAEsB0N,CAAA0iD,SAFtB,CAAAnwD,KAAA,CAGU,UAHV,CAGsByN,CAAA0iD,SAHtB,CAAApwD,KAAA,CAIU,OAJV,CAImB0N,CAAAmgE,MAJnB,CAAA/3C,KAAA,CAKUpoB,CAAAmgE,MALV,CAoBF,CAZAO,CAAAhtE,KAAA,CAAqBitE,CAArB,CAAsC,CAClC9tE,QAASA,CADyB,CAElCstE,MAAOngE,CAAAmgE,MAF2B,CAGlCxmD,GAAI3Z,CAAA2Z,GAH8B,CAIlC+oC,SAAU1iD,CAAA0iD,SAJwB,CAAtC,CAYA,CANAud,CAAA,CAAeC,CAAf,CAAyBlgE,CAAAmgE,MAAzB,CAAuC,CAAA,CAAvC,CAMA,CALIoB,CAAJ,CACEA,CAAA7d,MAAA,CAAkB7wD,CAAlB,CADF,CAGE4tE,CAAA5tE,QAAAwD,OAAA,CAA8BxD,CAA9B,CAEF,CAAA0uE,CAAA,CAAc1uE,CArDhB,CA0DF,KADAI,CAAA,EACA,CAAOytE,CAAA7xE,OAAP,CAAgCoE,CAAhC,CAAA,CACE+M,CAEA,CAFS0gE,CAAA/rD,IAAA,EAET,CADAsrD,CAAA,CAAeC,CAAf,CAAyBlgE,CAAAmgE,MAAzB,CAAuC,CAAA,CAAvC,CACA,CAAAngE,CAAAnN,QAAAonB,OAAA,EA1Fe,CA8FnB,IAAA,CAAOonD,CAAAxyE,OAAP;AAAkCsyE,CAAlC,CAAA,CAA8C,CAE5CX,CAAA,CAAca,CAAA1sD,IAAA,EACd,KAAK1hB,CAAL,CAAa,CAAb,CAAgBA,CAAhB,CAAwButE,CAAA3xE,OAAxB,CAA4C,EAAEoE,CAA9C,CACEgtE,CAAA,CAAeC,CAAf,CAAyBM,CAAA,CAAYvtE,CAAZ,CAAAktE,MAAzB,CAAmD,CAAA,CAAnD,CAEFK,EAAA,CAAY,CAAZ,CAAA3tE,QAAAonB,OAAA,EAN4C,CAQ9C/qB,CAAA,CAAQgxE,CAAR,CAAkB,QAAQ,CAAC9pC,CAAD,CAAQ+pC,CAAR,CAAe,CAC3B,CAAZ,CAAI/pC,CAAJ,CACEwoC,CAAAX,UAAA,CAAqBkC,CAArB,CADF,CAEmB,CAFnB,CAEW/pC,CAFX,EAGEwoC,CAAAT,aAAA,CAAwBgC,CAAxB,CAJqC,CAAzC,CAjLgB,CA9KlB,IAAIpsE,CAEJ,IAAM,EAAAA,CAAA,CAAQ0tE,CAAA1tE,MAAA,CAAiBupE,CAAjB,CAAR,CAAN,CACE,KAAMD,GAAA,CAAgB,MAAhB,CAIJoE,CAJI,CAIQ1rE,EAAA,CAAY4oE,CAAZ,CAJR,CAAN,CAJgD,IAW9CsC,EAAY56D,CAAA,CAAOtS,CAAA,CAAM,CAAN,CAAP,EAAmBA,CAAA,CAAM,CAAN,CAAnB,CAXkC,CAY9CsrE,EAAYtrE,CAAA,CAAM,CAAN,CAAZsrE,EAAwBtrE,CAAA,CAAM,CAAN,CAZsB,CAa9C2tE,EAAW,MAAAnoE,KAAA,CAAYxF,CAAA,CAAM,CAAN,CAAZ,CAAX2tE,EAAoC3tE,CAAA,CAAM,CAAN,CAbU,CAc9C8rE,EAAa6B,CAAA,CAAWr7D,CAAA,CAAOq7D,CAAP,CAAX,CAA8B,IAdG,CAe9CpC,EAAUvrE,CAAA,CAAM,CAAN,CAfoC,CAgB9CitE,EAAY36D,CAAA,CAAOtS,CAAA,CAAM,CAAN,CAAP,EAAmB,EAAnB,CAhBkC,CAiB9CxC,EAAU8U,CAAA,CAAOtS,CAAA,CAAM,CAAN,CAAA,CAAWA,CAAA,CAAM,CAAN,CAAX,CAAsBsrE,CAA7B,CAjBoC,CAkB9CuB,EAAWv6D,CAAA,CAAOtS,CAAA,CAAM,CAAN,CAAP,CAlBmC,CAoB9C0rE,EADQ1rE,CAAA4tE,CAAM,CAANA,CACE,CAAQt7D,CAAA,CAAOtS,CAAA,CAAM,CAAN,CAAP,CAAR,CAA2B,IApBS,CAqB9CgtE,EAAiB,EArB6B,CA0B9CM,EAAoB,CAAC,CAAC,CAACxuE,QAAS8rE,CAAV,CAAyBwB,MAAM,EAA/B,CAAD,CAAD,CA1B0B,CA4B9CzuD,EAAS,EAETwvD,EAAJ,GAEE1O,CAAA,CAAS0O,CAAT,CAAA,CAAqBjoE,CAArB,CAQA,CAJAioE,CAAAjyD,YAAA,CAAuB,UAAvB,CAIA,CAAAiyD,CAAAjnD,OAAA,EAVF,CAcA0kD,EAAAzoE,MAAA,EAEAyoE,EAAA9jE,GAAA,CAAiB,QAAjB,CAmBA+mE,QAAyB,EAAG,CAC1B3oE,CAAAE,OAAA,CAAa,QAAQ,EAAG,CACtB,IAAI6hB,EAAa4lD,CAAA,CAAS3nE,CAAT,CAAb+hB,EAAgC,EAApC,CACIs2C,CACJ,IAAI7O,CAAJ,CACE6O,CACA,CADY,EACZ,CAAApiE,CAAA,CAAQyvE,CAAAppE,IAAA,EAAR;AAA6B,QAAQ,CAACssE,CAAD,CAAc,CAC/CA,CAAA,CAAcpC,CAAA,CAAUsB,CAAA,CAAec,CAAf,CAAV,CAAwCA,CACxDvQ,EAAA59D,KAAA,CAYM,GAAZ,GAZkCmuE,CAYlC,CACSrzE,CADT,CAEmB,EAAZ,GAd2BqzE,CAc3B,CACE,IADF,CAIE1C,CAAA,CADWU,CAAAiC,CAAajC,CAAbiC,CAA0BvwE,CACrC,CAlByBswE,CAkBzB,CAlBsC7mD,CAAA/qB,CAAW4xE,CAAX5xE,CAkBtC,CAlBH,CAFiD,CAAnD,CAFF,KAMO,CACL,IAAI4xE,EAAcpC,CAAA,CAAUsB,CAAA,CAAepC,CAAAppE,IAAA,EAAf,CAAV,CAAgDopE,CAAAppE,IAAA,EAClE+7D,EAAA,CAQQ,GAAZ,GAR6BuQ,CAQ7B,CACSrzE,CADT,CAEmB,EAAZ,GAVsBqzE,CAUtB,CACE,IADF,CAIE1C,CAAA,CADWU,CAAAiC,CAAajC,CAAbiC,CAA0BvwE,CACrC,CAdoBswE,CAcpB,CAdiC7mD,CAAA/qB,CAAW4xE,CAAX5xE,CAcjC,CAhBA,CAIPuqD,CAAAwB,cAAA,CAAmBsV,CAAnB,CACA0O,EAAA,EAdsB,CAAxB,CAD0B,CAnB5B,CAEAxlB,EAAA4B,QAAA,CAAe4jB,CAEf/mE,EAAAurB,iBAAA,CAAuBo8C,CAAvB,CAAiCd,CAAjC,CACA7mE,EAAAurB,iBAAA,CA4CAu9C,QAAkB,EAAG,CACnB,IAAI51C,EAASy0C,CAAA,CAAS3nE,CAAT,CAAb,CACI+oE,CACJ,IAAI71C,CAAJ,EAAcl9B,CAAA,CAAQk9B,CAAR,CAAd,CAA+B,CAC7B61C,CAAA,CAAgB/uD,KAAJ,CAAUkZ,CAAAt9B,OAAV,CACZ,KAF6B,IAEpBiB,EAAI,CAFgB,CAEbW,EAAK07B,CAAAt9B,OAArB,CAAoCiB,CAApC,CAAwCW,CAAxC,CAA4CX,CAAA,EAA5C,CACEkyE,CAAA,CAAUlyE,CAAV,CAAA,CAAeqvE,CAAA,CAAe8B,CAAf,CAA0BnxE,CAA1B,CAA6Bq8B,CAAA,CAAOr8B,CAAP,CAA7B,CAHY,CAA/B,IAMO,IAAIq8B,CAAJ,CAGL,IAAS75B,CAAT,GADA0vE,EACiB71C,CADL,EACKA,CAAAA,CAAjB,CACMA,CAAA58B,eAAA,CAAsB+C,CAAtB,CAAJ,GACE0vE,CAAA,CAAU1vE,CAAV,CADF,CACoB6sE,CAAA,CAAe8B,CAAf,CAA0B3uE,CAA1B,CAAgC65B,CAAA,CAAO75B,CAAP,CAAhC,CADpB,CAKJ,OAAO0vE,EAlBY,CA5CrB,CAAkClC,CAAlC,CAEIrd,EAAJ,EACExpD,CAAAurB,iBAAA,CAAuB,QAAQ,EAAG,CAAE,MAAOg2B,EAAAoa,YAAT,CAAlC,CAAgEkL,CAAhE,CAtDgD,CAjGpD,GAAK5N,CAAA,CAAM,CAAN,CAAL,CAAA,CAF0C,IAItC0M,EAAa1M,CAAA,CAAM,CAAN,CACbuL,EAAAA,CAAcvL,CAAA,CAAM,CAAN,CALwB,KAMtCzP,EAAWlwD,CAAAkwD,SAN2B;AAOtCgf,EAAalvE,CAAAqQ,UAPyB,CAQtCs+D,EAAa,CAAA,CARyB,CAStCpC,CATsC,CAUtCiB,EAAkB,CAAA,CAVoB,CAatCyB,EAAiBxrE,CAAA,CAAOzH,CAAA0a,cAAA,CAAuB,QAAvB,CAAP,CAbqB,CActCq4D,EAAkBtrE,CAAA,CAAOzH,CAAA0a,cAAA,CAAuB,UAAvB,CAAP,CAdoB,CAetCy0D,EAAgB8D,CAAAvrE,MAAA,EAGXnG,EAAAA,CAAI,CAAb,KAlB0C,IAkB1ByvC,EAAW1sC,CAAA0sC,SAAA,EAlBe,CAkBK9uC,EAAK8uC,CAAA1wC,OAApD,CAAqEiB,CAArE,CAAyEW,CAAzE,CAA6EX,CAAA,EAA7E,CACE,GAA0B,EAA1B,GAAIyvC,CAAA,CAASzvC,CAAT,CAAAG,MAAJ,CAA8B,CAC5B6uE,CAAA,CAAcoC,CAAd,CAA2B3hC,CAAAkK,GAAA,CAAY35C,CAAZ,CAC3B,MAF4B,CAMhC8uE,CAAAhB,KAAA,CAAgBH,CAAhB,CAA6ByD,CAA7B,CAAyCxD,CAAzC,CAGIjb,EAAJ,GACEgb,CAAAhiB,SADF,CACyBwmB,QAAQ,CAAChyE,CAAD,CAAQ,CACrC,MAAO,CAACA,CAAR,EAAkC,CAAlC,GAAiBA,CAAApB,OADoB,CADzC,CAMI4yE,EAAJ,CAAgBvC,CAAA,CAAejmE,CAAf,CAAsBpG,CAAtB,CAA+B4qE,CAA/B,CAAhB,CACShb,CAAJ,CAAcsc,CAAA,CAAgB9lE,CAAhB,CAAuBpG,CAAvB,CAAgC4qE,CAAhC,CAAd,CACAiB,CAAA,CAAczlE,CAAd,CAAqBpG,CAArB,CAA8B4qE,CAA9B,CAA2CmB,CAA3C,CAlCL,CAF0C,CAnEvC,CANiE,CAApD,CA39GtB,CAo/HI3+D,GAAkB,CAAC,cAAD,CAAiB,QAAQ,CAACwF,CAAD,CAAe,CAC5D,IAAIy8D,EAAiB,CACnBjE,UAAW7sE,CADQ,CAEnB+sE,aAAc/sE,CAFK,CAKrB,OAAO,CACL4qB,SAAU,GADL,CAELF,SAAU,GAFL,CAGL5iB,QAASA,QAAQ,CAACrG,CAAD,CAAUN,CAAV,CAAgB,CAC/B,GAAIf,CAAA,CAAYe,CAAAtC,MAAZ,CAAJ,CAA6B,CAC3B,IAAIo4B,EAAgB5iB,CAAA,CAAa5S,CAAAu1B,KAAA,EAAb,CAA6B,CAAA,CAA7B,CACfC,EAAL,EACE91B,CAAAw0B,KAAA,CAAU,OAAV,CAAmBl0B,CAAAu1B,KAAA,EAAnB,CAHyB,CAO7B,MAAO,SAAQ,CAACnvB,CAAD,CAAQpG,CAAR,CAAiBN,CAAjB,CAAuB,CAAA,IAEhCtB;AAAS4B,CAAA5B,OAAA,EAFuB,CAGhC2tE,EAAa3tE,CAAAmI,KAAA,CAFI+oE,mBAEJ,CAAbvD,EACE3tE,CAAAA,OAAA,EAAAmI,KAAA,CAHe+oE,mBAGf,CAEDvD,EAAL,EAAoBA,CAAAjB,UAApB,GACEiB,CADF,CACesD,CADf,CAII75C,EAAJ,CACEpvB,CAAAhH,OAAA,CAAao2B,CAAb,CAA4B+5C,QAA+B,CAAChuD,CAAD,CAASC,CAAT,CAAiB,CAC1E9hB,CAAAw0B,KAAA,CAAU,OAAV,CAAmB3S,CAAnB,CACIC,EAAJ,GAAeD,CAAf,EACEwqD,CAAAT,aAAA,CAAwB9pD,CAAxB,CAEFuqD,EAAAX,UAAA,CAAqB7pD,CAArB,CAA6BvhB,CAA7B,CAL0E,CAA5E,CADF,CASE+rE,CAAAX,UAAA,CAAqB1rE,CAAAtC,MAArB,CAAiC4C,CAAjC,CAGFA,EAAAgI,GAAA,CAAW,UAAX,CAAuB,QAAQ,EAAG,CAChC+jE,CAAAT,aAAA,CAAwB5rE,CAAAtC,MAAxB,CADgC,CAAlC,CAtBoC,CARP,CAH5B,CANqD,CAAxC,CAp/HtB,CAmiII8P,GAAiBxO,EAAA,CAAQ,CAC3ByqB,SAAU,GADiB,CAE3BsD,SAAU,CAAA,CAFiB,CAAR,CAniIrB,CAwiII5b,GAAoBA,QAAQ,EAAG,CACjC,MAAO,CACLsY,SAAU,GADL,CAELD,QAAS,UAFJ,CAGL3C,KAAMA,QAAQ,CAACngB,CAAD,CAAQ8a,CAAR,CAAaxhB,CAAb,CAAmBioD,CAAnB,CAAyB,CAChCA,CAAL,GACAjoD,CAAAkR,SAMA,CANgB,CAAA,CAMhB,CAJA+2C,CAAA6D,YAAA56C,SAIA,CAJ4B4+D,QAAQ,CAAChR,CAAD,CAAaC,CAAb,CAAwB,CAC1D,MAAO,CAAC/+D,CAAAkR,SAAR,EAAyB,CAAC+2C,CAAAiB,SAAA,CAAc6V,CAAd,CADgC,CAI5D,CAAA/+D,CAAAuxB,SAAA,CAAc,UAAd,CAA0B,QAAQ,EAAG,CACnC02B,CAAA+D,UAAA,EADmC,CAArC,CAPA,CADqC,CAHlC,CAD0B,CAxiInC;AA4jIIh7C,GAAmBA,QAAQ,EAAG,CAChC,MAAO,CACLyY,SAAU,GADL,CAELD,QAAS,UAFJ,CAGL3C,KAAMA,QAAQ,CAACngB,CAAD,CAAQ8a,CAAR,CAAaxhB,CAAb,CAAmBioD,CAAnB,CAAyB,CACrC,GAAKA,CAAL,CAAA,CADqC,IAGjCp+B,CAHiC,CAGzBkmD,EAAa/vE,CAAAiR,UAAb8+D,EAA+B/vE,CAAA+Q,QAC3C/Q,EAAAuxB,SAAA,CAAc,SAAd,CAAyB,QAAQ,CAACkpB,CAAD,CAAQ,CACnCh+C,CAAA,CAASg+C,CAAT,CAAJ,EAAsC,CAAtC,CAAuBA,CAAAn+C,OAAvB,GACEm+C,CADF,CACU,IAAIl5C,MAAJ,CAAW,GAAX,CAAiBk5C,CAAjB,CAAyB,GAAzB,CADV,CAIA,IAAIA,CAAJ,EAAczzC,CAAAyzC,CAAAzzC,KAAd,CACE,KAAM9K,EAAA,CAAO,WAAP,CAAA,CAAoB,UAApB,CACqD6zE,CADrD,CAEJt1B,CAFI,CAEGj3C,EAAA,CAAYge,CAAZ,CAFH,CAAN,CAKFqI,CAAA,CAAS4wB,CAAT,EAAkBx+C,CAClBgsD,EAAA+D,UAAA,EAZuC,CAAzC,CAeA/D,EAAA6D,YAAA/6C,QAAA,CAA2Bi/D,QAAQ,CAACtyE,CAAD,CAAQ,CACzC,MAAOuqD,EAAAiB,SAAA,CAAcxrD,CAAd,CAAP,EAA+BuB,CAAA,CAAY4qB,CAAZ,CAA/B,EAAsDA,CAAA7iB,KAAA,CAAYtJ,CAAZ,CADb,CAlB3C,CADqC,CAHlC,CADyB,CA5jIlC,CA2lII+T,GAAqBA,QAAQ,EAAG,CAClC,MAAO,CACLgY,SAAU,GADL,CAELD,QAAS,UAFJ,CAGL3C,KAAMA,QAAQ,CAACngB,CAAD,CAAQ8a,CAAR,CAAaxhB,CAAb,CAAmBioD,CAAnB,CAAyB,CACrC,GAAKA,CAAL,CAAA,CAEA,IAAIz2C,EAAa,EACjBxR,EAAAuxB,SAAA,CAAc,WAAd,CAA2B,QAAQ,CAAC7zB,CAAD,CAAQ,CACrCuyE,CAAAA,CAAS3xE,EAAA,CAAIZ,CAAJ,CACb8T,EAAA,CAAY+nC,KAAA,CAAM02B,CAAN,CAAA,CAAiB,EAAjB,CAAqBA,CACjChoB,EAAA+D,UAAA,EAHyC,CAA3C,CAKA/D;CAAA6D,YAAAt6C,UAAA,CAA6B0+D,QAAQ,CAACpR,CAAD,CAAaC,CAAb,CAAwB,CAC3D,MAAoB,EAApB,CAAQvtD,CAAR,EAA0By2C,CAAAiB,SAAA,CAAc6V,CAAd,CAA1B,EAAuDA,CAAAziE,OAAvD,EAA2EkV,CADhB,CAR7D,CADqC,CAHlC,CAD2B,CA3lIpC,CA+mIIF,GAAqBA,QAAQ,EAAG,CAClC,MAAO,CACLmY,SAAU,GADL,CAELD,QAAS,UAFJ,CAGL3C,KAAMA,QAAQ,CAACngB,CAAD,CAAQ8a,CAAR,CAAaxhB,CAAb,CAAmBioD,CAAnB,CAAyB,CACrC,GAAKA,CAAL,CAAA,CAEA,IAAI52C,EAAY,CAChBrR,EAAAuxB,SAAA,CAAc,WAAd,CAA2B,QAAQ,CAAC7zB,CAAD,CAAQ,CACzC2T,CAAA,CAAY/S,EAAA,CAAIZ,CAAJ,CAAZ,EAA0B,CAC1BuqD,EAAA+D,UAAA,EAFyC,CAA3C,CAIA/D,EAAA6D,YAAAz6C,UAAA,CAA6B8+D,QAAQ,CAACrR,CAAD,CAAaC,CAAb,CAAwB,CAC3D,MAAO9W,EAAAiB,SAAA,CAAc6V,CAAd,CAAP,EAAmCA,CAAAziE,OAAnC,EAAuD+U,CADI,CAP7D,CADqC,CAHlC,CAD2B,CAmB9BtV,EAAAkL,QAAA9B,UAAJ,CAEEmnC,OAAAE,IAAA,CAAY,gDAAZ,CAFF,EAQAtkC,EAAA,EAIA,CAFA+D,EAAA,CAAmBhF,EAAnB,CAEA,CAAAxD,CAAA,CAAOzH,CAAP,CAAAszD,MAAA,CAAuB,QAAQ,EAAG,CAChCpqD,EAAA,CAAYlJ,CAAZ,CAAsBmJ,EAAtB,CADgC,CAAlC,CAZA,CA7qzBqC,CAAtC,CAAD,CA6rzBGpJ,MA7rzBH,CA6rzBWC,QA7rzBX,CA+rzBC,EAAAD,MAAAkL,QAAAmpE,MAAA,EAAD,EAA2Br0E,MAAAkL,QAAA3G,QAAA,CAAuBtE,QAAvB,CAAAiE,KAAA,CAAsC,MAAtC,CAAA+wD,QAAA,CAAsD,8MAAtD;", "sources":["angular.js"], -"names":["window","document","undefined","minErr","isArrayLike","obj","isWindow","length","nodeType","NODE_TYPE_ELEMENT","isString","isArray","forEach","iterator","context","key","isFunction","hasOwnProperty","call","isPrimitive","forEachSorted","keys","Object","sort","i","reverseParams","iteratorFn","value","nextUid","uid","setHashKey","h","$$hashKey","extend","dst","ii","arguments","j","jj","int","str","parseInt","noop","identity","$","valueFn","isUndefined","isDefined","isObject","isNumber","isDate","toString","isRegExp","isScope","$evalAsync","$watch","isBoolean","isElement","node","nodeName","prop","attr","find","makeMap","items","split","nodeName_","element","lowercase","arrayRemove","array","index","indexOf","splice","copy","source","destination","stackSource","stackDest","ngMinErr","push","result","Date","getTime","RegExp","match","lastIndex","emptyObject","create","getPrototypeOf","shallowCopy","src","charAt","equals","o1","o2","t1","t2","keySet","concat","array1","array2","slice","bind","self","fn","curryArgs","startIndex","apply","toJsonReplacer","val","toJson","pretty","JSON","stringify","fromJson","json","parse","startingTag","jqLite","clone","empty","e","elemHtml","append","html","NODE_TYPE_TEXT","replace","tryDecodeURIComponent","decodeURIComponent","parseKeyValue","keyValue","key_value","toKeyValue","parts","arrayValue","encodeUriQuery","join","encodeUriSegment","pctEncodeSpaces","encodeURIComponent","getNgAttribute","ngAttr","ngAttrPrefixes","angularInit","bootstrap","appElement","module","config","prefix","name","hasAttribute","getAttribute","candidate","querySelector","strictDi","modules","defaultConfig","doBootstrap","injector","tag","unshift","$provide","debugInfoEnabled","$compileProvider","createInjector","invoke","bootstrapApply","scope","compile","$apply","data","NG_ENABLE_DEBUG_INFO","NG_DEFER_BOOTSTRAP","test","angular","resumeBootstrap","angular.resumeBootstrap","extraModules","reloadWithDebugInfo","location","reload","getTestability","rootElement","get","snake_case","separator","SNAKE_CASE_REGEXP","letter","pos","toLowerCase","bindJQuery","originalCleanData","bindJQueryFired","jQuery","on","JQLitePrototype","isolateScope","controller","inheritedData","cleanData","jQuery.cleanData","elems","events","skipDestroyOnNextJQueryCleanData","elem","_data","$destroy","triggerHandler","JQLite","assertArg","arg","reason","assertArgFn","acceptArrayAnnotation","constructor","assertNotHasOwnProperty","getter","path","bindFnToScope","lastInstance","len","getBlockNodes","nodes","endNode","blockNodes","nextSibling","createMap","setupModuleLoader","ensure","factory","$injectorMinErr","$$minErr","requires","configFn","invokeLater","provider","method","insertMethod","queue","invokeQueue","moduleInstance","configBlocks","runBlocks","_invokeQueue","_configBlocks","_runBlocks","service","constant","animation","filter","directive","run","block","publishExternalAPI","version","uppercase","counter","csp","angularModule","$LocaleProvider","ngModule","$$sanitizeUri","$$SanitizeUriProvider","$CompileProvider","a","htmlAnchorDirective","input","inputDirective","textarea","form","formDirective","script","scriptDirective","select","selectDirective","style","styleDirective","option","optionDirective","ngBind","ngBindDirective","ngBindHtml","ngBindHtmlDirective","ngBindTemplate","ngBindTemplateDirective","ngClass","ngClassDirective","ngClassEven","ngClassEvenDirective","ngClassOdd","ngClassOddDirective","ngCloak","ngCloakDirective","ngController","ngControllerDirective","ngForm","ngFormDirective","ngHide","ngHideDirective","ngIf","ngIfDirective","ngInclude","ngIncludeDirective","ngInit","ngInitDirective","ngNonBindable","ngNonBindableDirective","ngPluralize","ngPluralizeDirective","ngRepeat","ngRepeatDirective","ngShow","ngShowDirective","ngStyle","ngStyleDirective","ngSwitch","ngSwitchDirective","ngSwitchWhen","ngSwitchWhenDirective","ngSwitchDefault","ngSwitchDefaultDirective","ngOptions","ngOptionsDirective","ngTransclude","ngTranscludeDirective","ngModel","ngModelDirective","ngList","ngListDirective","ngChange","ngChangeDirective","pattern","patternDirective","ngPattern","required","requiredDirective","ngRequired","minlength","minlengthDirective","ngMinlength","maxlength","maxlengthDirective","ngMaxlength","ngValue","ngValueDirective","ngModelOptions","ngModelOptionsDirective","ngIncludeFillContentDirective","ngAttributeAliasDirectives","ngEventDirectives","$anchorScroll","$AnchorScrollProvider","$animate","$AnimateProvider","$browser","$BrowserProvider","$cacheFactory","$CacheFactoryProvider","$controller","$ControllerProvider","$document","$DocumentProvider","$exceptionHandler","$ExceptionHandlerProvider","$filter","$FilterProvider","$interpolate","$InterpolateProvider","$interval","$IntervalProvider","$http","$HttpProvider","$httpBackend","$HttpBackendProvider","$location","$LocationProvider","$log","$LogProvider","$parse","$ParseProvider","$rootScope","$RootScopeProvider","$q","$QProvider","$$q","$$QProvider","$sce","$SceProvider","$sceDelegate","$SceDelegateProvider","$sniffer","$SnifferProvider","$templateCache","$TemplateCacheProvider","$templateRequest","$TemplateRequestProvider","$$testability","$$TestabilityProvider","$timeout","$TimeoutProvider","$window","$WindowProvider","$$rAF","$$RAFProvider","$$asyncCallback","$$AsyncCallbackProvider","camelCase","SPECIAL_CHARS_REGEXP","_","offset","toUpperCase","MOZ_HACK_REGEXP","jqLiteAcceptsData","NODE_TYPE_DOCUMENT","jqLiteBuildFragment","tmp","fragment","createDocumentFragment","HTML_REGEXP","appendChild","createElement","TAG_NAME_REGEXP","exec","wrap","wrapMap","_default","innerHTML","XHTML_TAG_REGEXP","lastChild","childNodes","firstChild","textContent","createTextNode","argIsString","trim","jqLiteMinErr","parsed","SINGLE_TAG_REGEXP","jqLiteAddNodes","jqLiteClone","cloneNode","jqLiteDealoc","onlyDescendants","jqLiteRemoveData","querySelectorAll","descendants","l","jqLiteOff","type","unsupported","expandoStore","jqLiteExpandoStore","handle","listenerFns","removeEventListener","expandoId","ng339","jqCache","createIfNecessary","jqId","jqLiteData","isSimpleSetter","isSimpleGetter","massGetter","jqLiteHasClass","selector","jqLiteRemoveClass","cssClasses","setAttribute","cssClass","jqLiteAddClass","existingClasses","root","elements","jqLiteController","jqLiteInheritedData","documentElement","names","parentNode","NODE_TYPE_DOCUMENT_FRAGMENT","host","jqLiteEmpty","removeChild","jqLiteRemove","keepData","parent","jqLiteDocumentLoaded","action","win","readyState","setTimeout","getBooleanAttrName","booleanAttr","BOOLEAN_ATTR","BOOLEAN_ELEMENTS","getAliasedAttrName","ALIASED_ATTR","createEventHandler","eventHandler","event","isDefaultPrevented","event.isDefaultPrevented","defaultPrevented","eventFns","eventFnsLength","immediatePropagationStopped","originalStopImmediatePropagation","stopImmediatePropagation","event.stopImmediatePropagation","stopPropagation","isImmediatePropagationStopped","event.isImmediatePropagationStopped","hashKey","nextUidFn","objType","HashMap","isolatedUid","this.nextUid","put","anonFn","args","fnText","STRIP_COMMENTS","FN_ARGS","annotate","$inject","argDecl","FN_ARG_SPLIT","FN_ARG","all","underscore","last","modulesToLoad","supportObject","delegate","provider_","providerInjector","instantiate","$get","providerCache","providerSuffix","enforceReturnValue","enforcedReturnValue","instanceInjector","factoryFn","enforce","loadModules","moduleFn","runInvokeQueue","invokeArgs","loadedModules","message","stack","createInternalInjector","cache","getService","serviceName","INSTANTIATING","err","shift","locals","Type","instance","prototype","returnedValue","has","$injector","instanceCache","decorator","decorFn","origProvider","orig$get","origProvider.$get","origInstance","$delegate","servicename","autoScrollingEnabled","disableAutoScrolling","this.disableAutoScrolling","getFirstAnchor","list","Array","some","scrollTo","scrollIntoView","scroll","yOffset","getComputedStyle","position","getBoundingClientRect","bottom","elemTop","top","scrollBy","hash","elm","getElementById","getElementsByName","autoScrollWatch","autoScrollWatchAction","newVal","oldVal","supported","Browser","completeOutstandingRequest","outstandingRequestCount","outstandingRequestCallbacks","pop","error","startPoller","interval","check","pollFns","pollFn","pollTimeout","cacheStateAndFireUrlChange","cacheState","fireUrlChange","cachedState","history","state","lastCachedState","lastBrowserUrl","url","lastHistoryState","urlChangeListeners","listener","safeDecodeURIComponent","rawDocument","clearTimeout","pendingDeferIds","isMock","$$completeOutstandingRequest","$$incOutstandingRequestCount","self.$$incOutstandingRequestCount","notifyWhenNoOutstandingRequests","self.notifyWhenNoOutstandingRequests","callback","addPollFn","self.addPollFn","href","baseElement","reloadLocation","self.url","sameState","sameBase","stripHash","self.state","urlChangeInit","onUrlChange","self.onUrlChange","$$checkUrlChange","baseHref","self.baseHref","lastCookies","lastCookieString","cookiePath","cookies","self.cookies","cookieLength","cookie","warn","cookieArray","substring","defer","self.defer","delay","timeoutId","cancel","self.defer.cancel","deferId","this.$get","cacheFactory","cacheId","options","refresh","entry","freshEnd","staleEnd","n","link","p","nextEntry","prevEntry","caches","size","stats","id","capacity","Number","MAX_VALUE","lruHash","lruEntry","remove","removeAll","destroy","info","cacheFactory.info","cacheFactory.get","$$sanitizeUriProvider","parseIsolateBindings","directiveName","LOCAL_REGEXP","bindings","definition","scopeName","$compileMinErr","mode","collection","optional","attrName","hasDirectives","COMMENT_DIRECTIVE_REGEXP","CLASS_DIRECTIVE_REGEXP","ALL_OR_NOTHING_ATTRS","REQUIRE_PREFIX_REGEXP","EVENT_HANDLER_ATTR_REGEXP","this.directive","registerDirective","directiveFactory","Suffix","directives","priority","require","restrict","$$isolateBindings","aHrefSanitizationWhitelist","this.aHrefSanitizationWhitelist","regexp","imgSrcSanitizationWhitelist","this.imgSrcSanitizationWhitelist","this.debugInfoEnabled","enabled","safeAddClass","$element","className","addClass","$compileNodes","transcludeFn","maxPriority","ignoreDirective","previousCompileContext","nodeValue","compositeLinkFn","compileNodes","$$addScopeClass","namespace","publicLinkFn","cloneConnectFn","parentBoundTranscludeFn","transcludeControllers","futureParentElement","$$boundTransclude","$linkNode","wrapTemplate","controllerName","$$addScopeInfo","nodeList","$rootElement","childLinkFn","childScope","childBoundTranscludeFn","stableNodeList","nodeLinkFnFound","linkFns","idx","nodeLinkFn","$new","transcludeOnThisElement","createBoundTranscludeFn","transclude","elementTranscludeOnThisElement","templateOnThisElement","attrs","linkFnFound","Attributes","collectDirectives","applyDirectivesToNode","$$element","terminal","previousBoundTranscludeFn","elementTransclusion","boundTranscludeFn","transcludedScope","cloneFn","controllers","containingScope","$$transcluded","attrsMap","$attr","addDirective","directiveNormalize","nName","isNgAttr","nAttrs","attributes","attrStartName","attrEndName","ngAttrName","NG_ATTR_BINDING","substr","directiveNName","multiElement","addAttrInterpolateDirective","addTextInterpolateDirective","NODE_TYPE_COMMENT","byPriority","groupScan","attrStart","attrEnd","depth","groupElementsLinkFnWrapper","linkFn","compileNode","templateAttrs","jqCollection","originalReplaceDirective","preLinkFns","postLinkFns","addLinkFns","pre","post","newIsolateScopeDirective","$$isolateScope","cloneAndAnnotateFn","getControllers","elementControllers","retrievalMethod","$searchElement","linkNode","controllersBoundTransclude","cloneAttachFn","hasElementTranscludeDirective","scopeToChild","controllerDirectives","$scope","$attrs","$transclude","controllerInstance","controllerAs","templateDirective","$$originalDirective","isolateScopeController","isolateBindingContext","identifier","bindToController","lastValue","parentGet","parentSet","compare","$observe","$$observers","$$scope","literal","b","assign","parentValueWatch","parentValue","$stateful","unwatch","$watchCollection","$on","invokeLinkFn","template","templateUrl","terminalPriority","newScopeDirective","nonTlbTranscludeDirective","hasTranscludeDirective","hasTemplate","$compileNode","$template","childTranscludeFn","$$start","$$end","directiveValue","assertNoDuplicate","$$tlb","createComment","replaceWith","replaceDirective","contents","denormalizeTemplate","removeComments","templateNamespace","newTemplateAttrs","templateDirectives","unprocessedDirectives","markDirectivesAsIsolate","mergeTemplateAttributes","compileTemplateUrl","Math","max","extra","tDirectives","startAttrName","endAttrName","srcAttr","dstAttr","$set","tAttrs","linkQueue","afterTemplateNodeLinkFn","afterTemplateChildLinkFn","beforeTemplateCompileNode","origAsyncDirective","derivedSyncDirective","getTrustedResourceUrl","then","content","tempTemplateAttrs","beforeTemplateLinkNode","linkRootElement","$$destroyed","oldClasses","delayedNodeLinkFn","ignoreChildLinkFn","diff","what","previousDirective","text","interpolateFn","textInterpolateCompileFn","templateNode","templateNodeParent","hasCompileParent","$$addBindingClass","textInterpolateLinkFn","$$addBindingInfo","expressions","interpolateFnWatchAction","wrapper","getTrustedContext","attrNormalizedName","HTML","RESOURCE_URL","allOrNothing","attrInterpolatePreLinkFn","$$inter","newValue","oldValue","$updateClass","elementsToRemove","newNode","firstElementToRemove","removeCount","j2","replaceChild","expando","k","kk","annotation","attributesToCopy","$normalize","$addClass","classVal","$removeClass","removeClass","newClasses","toAdd","tokenDifference","toRemove","writeAttr","booleanKey","aliasedKey","observer","trimmedSrcset","srcPattern","rawUris","nbrUrisWith2parts","floor","innerIdx","lastTuple","removeAttr","listeners","startSymbol","endSymbol","binding","isolated","noTemplate","dataName","PREFIX_REGEXP","str1","str2","values","tokens1","tokens2","token","jqNodes","globals","CNTRL_REG","register","this.register","allowGlobals","this.allowGlobals","addIdentifier","expression","later","ident","controllerPrototype","exception","cause","defaultHttpResponseTransform","headers","JSON_PROTECTION_PREFIX","contentType","APPLICATION_JSON","JSON_START","JSON_END","parseHeaders","line","headersGetter","headersObj","transformData","fns","defaults","transformResponse","transformRequest","d","common","CONTENT_TYPE_APPLICATION_JSON","patch","xsrfCookieName","xsrfHeaderName","useApplyAsync","this.useApplyAsync","interceptorFactories","interceptors","requestConfig","response","resp","status","reject","mergeHeaders","defHeaders","reqHeaders","defHeaderName","reqHeaderName","lowercaseDefHeaderName","execHeaders","headerContent","headerFn","header","chain","serverRequest","reqData","withCredentials","sendReq","promise","when","reversedInterceptors","interceptor","request","requestError","responseError","thenFn","rejectFn","success","promise.success","promise.error","done","headersString","statusText","resolveHttpPromise","resolvePromise","$applyAsync","$$phase","deferred","resolve","removePendingReq","pendingRequests","cachedResp","buildUrl","params","defaultCache","xsrfValue","urlIsSameOrigin","timeout","responseType","v","toISOString","interceptorFactory","createShortMethods","createShortMethodsWithData","createXhr","XMLHttpRequest","createHttpBackend","callbacks","$browserDefer","jsonpReq","callbackId","async","body","called","addEventListener","timeoutRequest","jsonpDone","xhr","abort","completeRequest","open","setRequestHeader","onload","xhr.onload","responseText","urlResolve","protocol","getAllResponseHeaders","onerror","onabort","send","this.startSymbol","this.endSymbol","escape","ch","mustHaveExpression","trustedContext","unescapeText","escapedStartRegexp","escapedEndRegexp","parseStringifyInterceptor","getTrusted","valueOf","newErr","$interpolateMinErr","endIndex","parseFns","textLength","expressionPositions","startSymbolLength","exp","endSymbolLength","compute","interpolationFn","$$watchDelegate","objectEquality","$watchGroup","interpolateFnWatcher","oldValues","currValue","$interpolate.startSymbol","$interpolate.endSymbol","count","invokeApply","setInterval","clearInterval","iteration","skipApply","$$intervalId","tick","notify","intervals","interval.cancel","NUMBER_FORMATS","DECIMAL_SEP","GROUP_SEP","PATTERNS","minInt","minFrac","maxFrac","posPre","posSuf","negPre","negSuf","gSize","lgSize","CURRENCY_SYM","DATETIME_FORMATS","MONTH","SHORTMONTH","DAY","SHORTDAY","AMPMS","medium","fullDate","longDate","mediumDate","shortDate","mediumTime","shortTime","pluralCat","num","encodePath","segments","parseAbsoluteUrl","absoluteUrl","locationObj","parsedUrl","$$protocol","$$host","hostname","$$port","port","DEFAULT_PORTS","parseAppUrl","relativeUrl","prefixed","$$path","pathname","$$search","search","$$hash","beginsWith","begin","whole","stripFile","lastIndexOf","LocationHtml5Url","appBase","basePrefix","$$html5","appBaseNoFile","$$parse","this.$$parse","pathUrl","$locationMinErr","$$compose","this.$$compose","$$url","$$absUrl","$$parseLinkUrl","this.$$parseLinkUrl","relHref","appUrl","prevAppUrl","rewrittenUrl","LocationHashbangUrl","hashPrefix","withoutBaseUrl","withoutHashUrl","windowsFilePathExp","firstPathSegmentMatch","LocationHashbangInHtml5Url","locationGetter","property","locationGetterSetter","preprocess","html5Mode","requireBase","rewriteLinks","this.hashPrefix","this.html5Mode","setBrowserUrlWithFallback","oldUrl","oldState","$$state","afterLocationChange","$broadcast","absUrl","LocationMode","initialUrl","IGNORE_URI_REGEXP","ctrlKey","metaKey","which","target","absHref","animVal","preventDefault","initializing","newUrl","newState","$digest","$locationWatch","currentReplace","$$replace","urlOrStateChanged","debug","debugEnabled","this.debugEnabled","flag","formatError","Error","sourceURL","consoleLog","console","logFn","log","hasApply","arg1","arg2","ensureSafeMemberName","fullExpression","$parseMinErr","ensureSafeObject","children","isConstant","setter","setValue","fullExp","propertyObj","isPossiblyDangerousMemberName","cspSafeGetterFn","key0","key1","key2","key3","key4","expensiveChecks","eso","o","eso0","eso1","eso2","eso3","eso4","cspSafeGetter","pathVal","getterFnWithEnsureSafeObject","s","getterFn","getterFnCache","getterFnCacheExpensive","getterFnCacheDefault","pathKeys","pathKeysLength","code","needsEnsureSafeObject","lookupJs","evaledFnGetter","Function","sharedGetter","fn.assign","getValueOf","objectValueOf","cacheDefault","cacheExpensive","wrapSharedExpression","wrapped","collectExpressionInputs","inputs","expressionInputDirtyCheck","oldValueOfValue","inputsWatchDelegate","parsedExpression","inputExpressions","$$inputs","lastResult","oldInputValue","expressionInputWatch","newInputValue","oldInputValueOfValues","expressionInputsWatch","changed","oneTimeWatchDelegate","oneTimeWatch","oneTimeListener","old","$$postDigest","oneTimeLiteralWatchDelegate","isAllDefined","allDefined","constantWatchDelegate","constantWatch","constantListener","addInterceptor","interceptorFn","watchDelegate","regularInterceptedExpression","oneTimeInterceptedExpression","$parseOptions","$parseOptionsExpensive","oneTime","cacheKey","parseOptions","lexer","Lexer","parser","Parser","qFactory","nextTick","exceptionHandler","callOnce","resolveFn","Promise","simpleBind","scheduleProcessQueue","processScheduled","pending","Deferred","$qMinErr","TypeError","onFulfilled","onRejected","progressBack","catch","finally","handleCallback","$$reject","$$resolve","progress","makePromise","resolved","isResolved","callbackOutput","errback","$Q","Q","resolver","promises","results","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","webkitCancelRequestAnimationFrame","rafSupported","raf","timer","TTL","$rootScopeMinErr","lastDirtyWatch","applyAsyncId","digestTtl","this.digestTtl","Scope","$id","$parent","$$watchers","$$nextSibling","$$prevSibling","$$childHead","$$childTail","$root","$$listeners","$$listenerCount","beginPhase","phase","decrementListenerCount","current","initWatchVal","flushApplyAsync","applyAsyncQueue","scheduleApplyAsync","isolate","destroyChild","child","$$ChildScope","this.$$ChildScope","watchExp","watcher","eq","deregisterWatch","watchExpressions","watchGroupAction","changeReactionScheduled","firstRun","newValues","deregisterFns","shouldCall","deregisterWatchGroup","expr","unwatchFn","watchGroupSubAction","$watchCollectionInterceptor","_value","bothNaN","newItem","oldItem","internalArray","oldLength","changeDetected","newLength","internalObject","veryOldValue","trackVeryOldValue","changeDetector","initRun","$watchCollectionAction","watch","watchers","dirty","ttl","watchLog","logIdx","asyncTask","asyncQueue","$eval","isNaN","msg","next","postDigestQueue","eventName","this.$watchGroup","$applyAsyncExpression","namedListeners","indexOfListener","$emit","targetScope","listenerArgs","currentScope","$$asyncQueue","$$postDigestQueue","$$applyAsyncQueue","sanitizeUri","uri","isImage","regex","normalizedVal","adjustMatcher","matcher","$sceMinErr","escapeForRegexp","adjustMatchers","matchers","adjustedMatchers","SCE_CONTEXTS","resourceUrlWhitelist","resourceUrlBlacklist","this.resourceUrlWhitelist","this.resourceUrlBlacklist","matchUrl","generateHolderType","Base","holderType","trustedValue","$$unwrapTrustedValue","this.$$unwrapTrustedValue","holderType.prototype.valueOf","holderType.prototype.toString","htmlSanitizer","trustedValueHolderBase","byType","CSS","URL","JS","trustAs","Constructor","maybeTrusted","allowed","this.enabled","msie","sce","isEnabled","sce.isEnabled","sce.getTrusted","parseAs","sce.parseAs","enumValue","lName","eventSupport","android","userAgent","navigator","boxee","vendorPrefix","vendorRegex","bodyStyle","transitions","animations","webkitTransition","webkitAnimation","pushState","hasEvent","divElm","handleRequestFn","tpl","ignoreRequestError","totalPendingRequests","original","transformer","httpOptions","handleError","testability","testability.findBindings","opt_exactMatch","getElementsByClassName","matches","dataBinding","bindingName","testability.findModels","prefixes","attributeEquals","testability.getLocation","testability.setLocation","testability.whenStable","deferreds","$$timeoutId","timeout.cancel","urlParsingNode","requestUrl","originUrl","filters","suffix","currencyFilter","dateFilter","filterFilter","jsonFilter","limitToFilter","lowercaseFilter","numberFilter","orderByFilter","uppercaseFilter","comparator","comparatorType","predicates","predicates.check","objKey","filtered","$locale","formats","amount","currencySymbol","fractionSize","formatNumber","number","groupSep","decimalSep","isFinite","isNegative","abs","numStr","formatedText","hasExponent","toFixed","fractionLen","min","round","fraction","lgroup","group","padNumber","digits","neg","dateGetter","date","dateStrGetter","shortForm","getFirstThursdayOfYear","year","dayOfWeekOnFirst","getDay","weekGetter","firstThurs","getFullYear","thisThurs","getMonth","getDate","jsonStringToDate","string","R_ISO8601_STR","tzHour","tzMin","dateSetter","setUTCFullYear","setFullYear","timeSetter","setUTCHours","setHours","m","ms","parseFloat","format","timezone","NUMBER_STRING","DATE_FORMATS_SPLIT","setMinutes","getMinutes","getTimezoneOffset","DATE_FORMATS","object","limit","Infinity","out","sortPredicate","reverseOrder","reverseComparator","comp","descending","v1","v2","map","predicate","ngDirective","FormController","controls","parentForm","$$parentForm","nullFormCtrl","$error","$$success","$pending","$name","$dirty","$pristine","$valid","$invalid","$submitted","$addControl","$rollbackViewValue","form.$rollbackViewValue","control","$commitViewValue","form.$commitViewValue","form.$addControl","$$renameControl","form.$$renameControl","newName","oldName","$removeControl","form.$removeControl","$setValidity","addSetValidityMethod","ctrl","set","unset","$setDirty","form.$setDirty","PRISTINE_CLASS","DIRTY_CLASS","$setPristine","form.$setPristine","setClass","SUBMITTED_CLASS","$setUntouched","form.$setUntouched","$setSubmitted","form.$setSubmitted","stringBasedInputType","$formatters","$isEmpty","baseInputType","placeholder","noevent","composing","ev","ngTrim","$viewValue","$$hasNativeValidators","$setViewValue","deferListener","keyCode","$render","ctrl.$render","createDateParser","mapping","iso","ISO_DATE_REGEXP","yyyy","MM","dd","HH","getHours","mm","ss","getSeconds","sss","getMilliseconds","part","NaN","createDateInputType","parseDate","dynamicDateInputType","isValidDate","parseObservedDateValue","badInputChecker","$options","previousDate","$$parserName","$parsers","parsedDate","$ngModelMinErr","timezoneOffset","ngMin","minVal","$validators","ctrl.$validators.min","$validate","ngMax","maxVal","ctrl.$validators.max","validity","VALIDITY_STATE_PROPERTY","badInput","typeMismatch","parseConstantExpr","fallback","parseFn","cachedToggleClass","switchValue","classCache","toggleValidationCss","validationErrorKey","isValid","VALID_CLASS","INVALID_CLASS","hasClass","setValidity","isObjectEmpty","PENDING_CLASS","combinedState","classDirective","arrayDifference","arrayClasses","classes","digestClassCounts","classCounts","classesToUpdate","ngClassWatchAction","$index","old$index","mod","REGEX_STRING_REGEXP","documentMode","isActive_","active","full","major","minor","dot","codeName","JQLite._data","MOUSE_EVENT_MAP","mouseleave","mouseenter","optgroup","tbody","tfoot","colgroup","caption","thead","th","td","ready","trigger","fired","removeData","removeAttribute","css","lowercasedName","specified","getNamedItem","ret","getText","$dv","multiple","selected","nodeCount","jqLiteOn","types","related","relatedTarget","contains","off","one","onFn","replaceNode","insertBefore","contentDocument","prepend","wrapNode","detach","after","newElement","toggleClass","condition","classCondition","nextElementSibling","getElementsByTagName","extraParameters","dummyEvent","handlerArgs","eventFnsCopy","arg3","unbind","$$annotate","$animateMinErr","$$selectors","classNameFilter","this.classNameFilter","$$classNameFilter","runAnimationPostDigest","cancelFn","$$cancelFn","defer.promise.$$cancelFn","ngAnimatePostDigest","ngAnimateNotifyComplete","resolveElementClasses","hasClasses","cachedClassManipulation","op","asyncPromise","currentDefer","applyStyles","styles","from","to","animate","enter","leave","move","$$addClassImmediately","$$removeClassImmediately","add","createdCache","STORAGE_KEY","$$setClassImmediately","PATH_MATCH","locationPrototype","paramValue","Location","Location.prototype.state","CALL","APPLY","BIND","CONSTANTS","null","true","false","constantGetter","OPERATORS","+","-","*","/","%","===","!==","==","!=","<",">","<=",">=","&&","||","!","ESCAPE","lex","tokens","readString","peek","readNumber","isIdent","readIdent","is","isWhitespace","ch2","ch3","op2","op3","op1","operator","throwError","chars","isExpOperator","start","end","colStr","peekCh","quote","rawString","hex","String","fromCharCode","rep","ZERO","statements","primary","expect","filterChain","consume","arrayDeclaration","functionCall","objectIndex","fieldAccess","peekToken","e1","e2","e3","e4","peekAhead","t","unaryFn","right","$parseUnaryFn","binaryFn","left","isBranching","$parseBinaryFn","$parseConstant","$parseStatements","inputFn","argsFn","$parseFilter","every","assignment","ternary","$parseAssignment","logicalOR","middle","$parseTernary","logicalAND","equality","relational","additive","multiplicative","unary","field","$parseFieldAccess","indexFn","$parseObjectIndex","fnGetter","contextGetter","expressionText","$parseFunctionCall","elementFns","$parseArrayLiteral","valueFns","$parseObjectLiteral","yy","y","MMMM","MMM","M","H","hh","EEEE","EEE","ampmGetter","Z","timeZoneGetter","zone","paddedZone","ww","w","xlinkHref","propName","normalized","ngBooleanAttrWatchAction","htmlAttr","ngAttrAliasWatchAction","nullFormRenameControl","formDirectiveFactory","isNgForm","ngFormCompile","formElement","ngFormPreLink","handleFormSubmission","parentFormCtrl","alias","URL_REGEXP","EMAIL_REGEXP","NUMBER_REGEXP","DATE_REGEXP","DATETIMELOCAL_REGEXP","WEEK_REGEXP","MONTH_REGEXP","TIME_REGEXP","DEFAULT_REGEXP","inputType","textInputType","weekParser","isoWeek","existingDate","week","minutes","hours","seconds","milliseconds","addDays","numberInputType","urlInputType","ctrl.$validators.url","modelValue","viewValue","emailInputType","email","ctrl.$validators.email","radioInputType","checked","checkboxInputType","trueValue","ngTrueValue","falseValue","ngFalseValue","ctrl.$isEmpty","ctrls","NgModelController","$modelValue","$$rawModelValue","$asyncValidators","$viewChangeListeners","$untouched","$touched","parsedNgModel","parsedNgModelAssign","ngModelGet","ngModelSet","pendingDebounce","$$setOptions","this.$$setOptions","getterSetter","invokeModelGetter","invokeModelSetter","$$$p","this.$isEmpty","currentValidationRunId","this.$setPristine","this.$setDirty","this.$setUntouched","UNTOUCHED_CLASS","TOUCHED_CLASS","$setTouched","this.$setTouched","this.$rollbackViewValue","$$lastCommittedViewValue","this.$validate","prevValid","prevModelValue","allowInvalid","$$runValidators","parserValid","allValid","$$writeModelToScope","this.$$runValidators","parseValid","doneCallback","processSyncValidators","syncValidatorsValid","validator","processAsyncValidators","validatorPromises","validationDone","localValidationRunId","processParseErrors","errorKey","this.$commitViewValue","$$parseAndValidate","this.$$parseAndValidate","this.$$writeModelToScope","this.$setViewValue","updateOnDefault","$$debounceViewValueCommit","this.$$debounceViewValueCommit","debounceDelay","debounce","ngModelWatch","formatters","ngModelCompile","ngModelPreLink","modelCtrl","formCtrl","ngModelPostLink","updateOn","ctrl.$validators.required","patternExp","ctrl.$validators.pattern","intVal","ctrl.$validators.maxlength","ctrl.$validators.minlength","trimValues","CONSTANT_VALUE_REGEXP","tplAttr","ngValueConstantLink","ngValueLink","valueWatchAction","that","$compile","ngBindCompile","templateElement","ngBindLink","ngBindWatchAction","ngBindTemplateCompile","ngBindTemplateLink","ngBindHtmlCompile","tElement","ngBindHtmlGetter","ngBindHtmlWatch","getStringValue","ngBindHtmlLink","ngBindHtmlWatchAction","getTrustedHtml","forceAsyncEvents","ngEventHandler","$event","previousElements","ngIfWatchAction","newScope","srcExp","onloadExp","autoScrollExp","autoscroll","changeCounter","previousElement","currentElement","cleanupLastIncludeContent","parseAsResourceUrl","ngIncludeWatchAction","afterAnimation","thisChangeId","namespaceAdaptedClone","BRACE","IS_WHEN","updateElementText","newText","numberExp","whenExp","whens","whensExpFns","braceReplacement","watchRemover","lastCount","attributeName","tmpMatch","whenKey","ngPluralizeWatchAction","countIsNaN","ngRepeatMinErr","updateScope","valueIdentifier","keyIdentifier","arrayLength","$first","$last","$middle","$odd","$even","ngRepeatCompile","ngRepeatEndComment","lhs","rhs","aliasAs","trackByExp","trackByExpGetter","trackByIdExpFn","trackByIdArrayFn","trackByIdObjFn","hashFnLocals","ngRepeatLink","lastBlockMap","ngRepeatAction","previousNode","nextNode","nextBlockMap","collectionLength","trackById","collectionKeys","nextBlockOrder","trackByIdFn","itemKey","blockKey","ngRepeatTransclude","ngShowWatchAction","NG_HIDE_CLASS","tempClasses","NG_HIDE_IN_PROGRESS_CLASS","ngHideWatchAction","ngStyleWatchAction","newStyles","oldStyles","ngSwitchController","cases","selectedTranscludes","selectedElements","previousLeaveAnimations","selectedScopes","spliceFactory","ngSwitchWatchAction","selectedTransclude","caseElement","selectedScope","anchor","ngOptionsMinErr","NG_OPTIONS_REGEXP","nullModelCtrl","optionsMap","ngModelCtrl","unknownOption","databound","init","self.init","ngModelCtrl_","nullOption_","unknownOption_","addOption","self.addOption","removeOption","self.removeOption","hasOption","renderUnknownOption","self.renderUnknownOption","unknownVal","self.hasOption","setupAsSingle","selectElement","selectCtrl","ngModelCtrl.$render","emptyOption","setupAsMultiple","lastView","selectMultipleWatch","setupAsOptions","callExpression","exprFn","valueName","keyName","createIsSelectedFn","selectedSet","trackFn","trackIndex","isSelected","compareValueFn","selectAsFn","scheduleRendering","renderScheduled","render","updateLabelMap","labelMap","label","added","optionGroups","optionGroupNames","optionGroupName","optionGroup","existingParent","existingOptions","existingOption","valuesFn","anySelected","optionId","trackKeysCache","groupByFn","displayFn","nullOption","groupIndex","groupLength","optionGroupsCache","optGroupTemplate","lastElement","optionTemplate","optionsExp","selectAs","track","selectionChanged","selectedKey","viewValueFn","getLabels","toDisplay","ngModelCtrl.$isEmpty","nullSelectCtrl","selectCtrlName","interpolateWatchAction","$$csp"] +"names":["window","document","undefined","minErr","isArrayLike","obj","isWindow","length","nodeType","NODE_TYPE_ELEMENT","isString","isArray","forEach","iterator","context","key","isFunction","hasOwnProperty","call","isPrimitive","forEachSorted","keys","Object","sort","i","reverseParams","iteratorFn","value","nextUid","uid","setHashKey","h","$$hashKey","extend","dst","ii","arguments","j","jj","int","str","parseInt","inherit","parent","extra","create","noop","identity","$","valueFn","isUndefined","isDefined","isObject","isNumber","isDate","toString","isRegExp","isScope","$evalAsync","$watch","isBoolean","isElement","node","nodeName","prop","attr","find","makeMap","items","split","nodeName_","element","lowercase","arrayRemove","array","index","indexOf","splice","copy","source","destination","stackSource","stackDest","ngMinErr","push","result","Date","getTime","RegExp","match","lastIndex","emptyObject","getPrototypeOf","shallowCopy","src","charAt","equals","o1","o2","t1","t2","keySet","concat","array1","array2","slice","bind","self","fn","curryArgs","startIndex","apply","toJsonReplacer","val","toJson","pretty","JSON","stringify","fromJson","json","parse","startingTag","jqLite","clone","empty","e","elemHtml","append","html","NODE_TYPE_TEXT","replace","tryDecodeURIComponent","decodeURIComponent","parseKeyValue","keyValue","key_value","toKeyValue","parts","arrayValue","encodeUriQuery","join","encodeUriSegment","pctEncodeSpaces","encodeURIComponent","getNgAttribute","ngAttr","ngAttrPrefixes","angularInit","bootstrap","appElement","module","config","prefix","name","hasAttribute","getAttribute","candidate","querySelector","strictDi","modules","defaultConfig","doBootstrap","injector","tag","unshift","$provide","debugInfoEnabled","$compileProvider","createInjector","invoke","bootstrapApply","scope","compile","$apply","data","NG_ENABLE_DEBUG_INFO","NG_DEFER_BOOTSTRAP","test","angular","resumeBootstrap","angular.resumeBootstrap","extraModules","resumeDeferredBootstrap","reloadWithDebugInfo","location","reload","getTestability","rootElement","get","snake_case","separator","SNAKE_CASE_REGEXP","letter","pos","toLowerCase","bindJQuery","originalCleanData","bindJQueryFired","jQuery","on","JQLitePrototype","isolateScope","controller","inheritedData","cleanData","jQuery.cleanData","elems","events","skipDestroyOnNextJQueryCleanData","elem","_data","$destroy","triggerHandler","JQLite","assertArg","arg","reason","assertArgFn","acceptArrayAnnotation","constructor","assertNotHasOwnProperty","getter","path","bindFnToScope","lastInstance","len","getBlockNodes","nodes","endNode","blockNodes","nextSibling","createMap","setupModuleLoader","ensure","factory","$injectorMinErr","$$minErr","requires","configFn","invokeLater","provider","method","insertMethod","queue","invokeQueue","moduleInstance","configBlocks","runBlocks","_invokeQueue","_configBlocks","_runBlocks","service","constant","animation","filter","directive","run","block","publishExternalAPI","version","uppercase","counter","csp","angularModule","$LocaleProvider","ngModule","$$sanitizeUri","$$SanitizeUriProvider","$CompileProvider","a","htmlAnchorDirective","input","inputDirective","textarea","form","formDirective","script","scriptDirective","select","selectDirective","style","styleDirective","option","optionDirective","ngBind","ngBindDirective","ngBindHtml","ngBindHtmlDirective","ngBindTemplate","ngBindTemplateDirective","ngClass","ngClassDirective","ngClassEven","ngClassEvenDirective","ngClassOdd","ngClassOddDirective","ngCloak","ngCloakDirective","ngController","ngControllerDirective","ngForm","ngFormDirective","ngHide","ngHideDirective","ngIf","ngIfDirective","ngInclude","ngIncludeDirective","ngInit","ngInitDirective","ngNonBindable","ngNonBindableDirective","ngPluralize","ngPluralizeDirective","ngRepeat","ngRepeatDirective","ngShow","ngShowDirective","ngStyle","ngStyleDirective","ngSwitch","ngSwitchDirective","ngSwitchWhen","ngSwitchWhenDirective","ngSwitchDefault","ngSwitchDefaultDirective","ngOptions","ngOptionsDirective","ngTransclude","ngTranscludeDirective","ngModel","ngModelDirective","ngList","ngListDirective","ngChange","ngChangeDirective","pattern","patternDirective","ngPattern","required","requiredDirective","ngRequired","minlength","minlengthDirective","ngMinlength","maxlength","maxlengthDirective","ngMaxlength","ngValue","ngValueDirective","ngModelOptions","ngModelOptionsDirective","ngIncludeFillContentDirective","ngAttributeAliasDirectives","ngEventDirectives","$anchorScroll","$AnchorScrollProvider","$animate","$AnimateProvider","$browser","$BrowserProvider","$cacheFactory","$CacheFactoryProvider","$controller","$ControllerProvider","$document","$DocumentProvider","$exceptionHandler","$ExceptionHandlerProvider","$filter","$FilterProvider","$interpolate","$InterpolateProvider","$interval","$IntervalProvider","$http","$HttpProvider","$httpBackend","$HttpBackendProvider","$location","$LocationProvider","$log","$LogProvider","$parse","$ParseProvider","$rootScope","$RootScopeProvider","$q","$QProvider","$$q","$$QProvider","$sce","$SceProvider","$sceDelegate","$SceDelegateProvider","$sniffer","$SnifferProvider","$templateCache","$TemplateCacheProvider","$templateRequest","$TemplateRequestProvider","$$testability","$$TestabilityProvider","$timeout","$TimeoutProvider","$window","$WindowProvider","$$rAF","$$RAFProvider","$$asyncCallback","$$AsyncCallbackProvider","$$jqLite","$$jqLiteProvider","camelCase","SPECIAL_CHARS_REGEXP","_","offset","toUpperCase","MOZ_HACK_REGEXP","jqLiteAcceptsData","NODE_TYPE_DOCUMENT","jqLiteBuildFragment","tmp","fragment","createDocumentFragment","HTML_REGEXP","appendChild","createElement","TAG_NAME_REGEXP","exec","wrap","wrapMap","_default","innerHTML","XHTML_TAG_REGEXP","lastChild","childNodes","firstChild","textContent","createTextNode","argIsString","trim","jqLiteMinErr","parsed","SINGLE_TAG_REGEXP","jqLiteAddNodes","jqLiteClone","cloneNode","jqLiteDealoc","onlyDescendants","jqLiteRemoveData","querySelectorAll","descendants","l","jqLiteOff","type","unsupported","expandoStore","jqLiteExpandoStore","handle","listenerFns","removeEventListener","expandoId","ng339","jqCache","createIfNecessary","jqId","jqLiteData","isSimpleSetter","isSimpleGetter","massGetter","jqLiteHasClass","selector","jqLiteRemoveClass","cssClasses","setAttribute","cssClass","jqLiteAddClass","existingClasses","root","elements","jqLiteController","jqLiteInheritedData","documentElement","names","parentNode","NODE_TYPE_DOCUMENT_FRAGMENT","host","jqLiteEmpty","removeChild","jqLiteRemove","keepData","jqLiteDocumentLoaded","action","win","readyState","setTimeout","getBooleanAttrName","booleanAttr","BOOLEAN_ATTR","BOOLEAN_ELEMENTS","getAliasedAttrName","ALIASED_ATTR","createEventHandler","eventHandler","event","isDefaultPrevented","event.isDefaultPrevented","defaultPrevented","eventFns","eventFnsLength","immediatePropagationStopped","originalStopImmediatePropagation","stopImmediatePropagation","event.stopImmediatePropagation","stopPropagation","isImmediatePropagationStopped","event.isImmediatePropagationStopped","$get","this.$get","hasClass","classes","addClass","removeClass","hashKey","nextUidFn","objType","HashMap","isolatedUid","this.nextUid","put","anonFn","args","fnText","STRIP_COMMENTS","FN_ARGS","modulesToLoad","supportObject","delegate","provider_","providerInjector","instantiate","providerCache","providerSuffix","enforceReturnValue","enforcedReturnValue","instanceInjector","factoryFn","enforce","loadModules","moduleFn","runInvokeQueue","invokeArgs","loadedModules","message","stack","createInternalInjector","cache","getService","serviceName","caller","INSTANTIATING","err","shift","locals","$inject","$$annotate","Type","instance","prototype","returnedValue","annotate","has","$injector","instanceCache","decorator","decorFn","origProvider","orig$get","origProvider.$get","origInstance","$delegate","autoScrollingEnabled","disableAutoScrolling","this.disableAutoScrolling","getFirstAnchor","list","Array","some","scrollTo","scrollIntoView","scroll","yOffset","getComputedStyle","position","getBoundingClientRect","bottom","elemTop","top","scrollBy","hash","elm","getElementById","getElementsByName","autoScrollWatch","autoScrollWatchAction","newVal","oldVal","supported","Browser","completeOutstandingRequest","outstandingRequestCount","outstandingRequestCallbacks","pop","error","startPoller","interval","check","pollFns","pollFn","pollTimeout","cacheStateAndFireUrlChange","cacheState","fireUrlChange","history","state","cachedState","lastCachedState","lastBrowserUrl","url","lastHistoryState","urlChangeListeners","listener","safeDecodeURIComponent","rawDocument","clearTimeout","pendingDeferIds","isMock","$$completeOutstandingRequest","$$incOutstandingRequestCount","self.$$incOutstandingRequestCount","notifyWhenNoOutstandingRequests","self.notifyWhenNoOutstandingRequests","callback","addPollFn","self.addPollFn","href","baseElement","reloadLocation","self.url","sameState","sameBase","stripHash","substr","self.state","urlChangeInit","onUrlChange","self.onUrlChange","$$checkUrlChange","baseHref","self.baseHref","lastCookies","lastCookieString","cookiePath","cookies","self.cookies","cookieLength","cookie","warn","cookieArray","substring","defer","self.defer","delay","timeoutId","cancel","self.defer.cancel","deferId","cacheFactory","cacheId","options","refresh","entry","freshEnd","staleEnd","n","link","p","nextEntry","prevEntry","caches","size","stats","id","capacity","Number","MAX_VALUE","lruHash","lruEntry","remove","removeAll","destroy","info","cacheFactory.info","cacheFactory.get","$$sanitizeUriProvider","parseIsolateBindings","directiveName","LOCAL_REGEXP","bindings","definition","scopeName","$compileMinErr","mode","collection","optional","attrName","hasDirectives","COMMENT_DIRECTIVE_REGEXP","CLASS_DIRECTIVE_REGEXP","ALL_OR_NOTHING_ATTRS","REQUIRE_PREFIX_REGEXP","EVENT_HANDLER_ATTR_REGEXP","this.directive","registerDirective","directiveFactory","Suffix","directives","priority","require","restrict","$$isolateBindings","aHrefSanitizationWhitelist","this.aHrefSanitizationWhitelist","regexp","imgSrcSanitizationWhitelist","this.imgSrcSanitizationWhitelist","this.debugInfoEnabled","enabled","safeAddClass","$element","className","$compileNodes","transcludeFn","maxPriority","ignoreDirective","previousCompileContext","nodeValue","compositeLinkFn","compileNodes","$$addScopeClass","namespace","publicLinkFn","cloneConnectFn","parentBoundTranscludeFn","transcludeControllers","futureParentElement","$$boundTransclude","$linkNode","wrapTemplate","controllerName","$$addScopeInfo","nodeList","$rootElement","childLinkFn","childScope","childBoundTranscludeFn","stableNodeList","nodeLinkFnFound","linkFns","idx","nodeLinkFn","$new","transcludeOnThisElement","createBoundTranscludeFn","transclude","elementTranscludeOnThisElement","templateOnThisElement","attrs","linkFnFound","Attributes","collectDirectives","applyDirectivesToNode","$$element","terminal","previousBoundTranscludeFn","elementTransclusion","boundTranscludeFn","transcludedScope","cloneFn","controllers","containingScope","$$transcluded","attrsMap","$attr","addDirective","directiveNormalize","isNgAttr","nAttrs","attributes","attrStartName","attrEndName","ngAttrName","NG_ATTR_BINDING","PREFIX_REGEXP","directiveNName","directiveIsMultiElement","nName","addAttrInterpolateDirective","animVal","addTextInterpolateDirective","NODE_TYPE_COMMENT","byPriority","groupScan","attrStart","attrEnd","depth","groupElementsLinkFnWrapper","linkFn","compileNode","templateAttrs","jqCollection","originalReplaceDirective","preLinkFns","postLinkFns","addLinkFns","pre","post","newIsolateScopeDirective","$$isolateScope","cloneAndAnnotateFn","getControllers","elementControllers","retrievalMethod","$searchElement","linkNode","controllersBoundTransclude","cloneAttachFn","hasElementTranscludeDirective","scopeToChild","controllerDirectives","$scope","$attrs","$transclude","controllerInstance","controllerAs","templateDirective","$$originalDirective","isolateScopeController","isolateBindingContext","identifier","bindToController","lastValue","parentGet","parentSet","compare","$observe","$$observers","$$scope","literal","b","assign","parentValueWatch","parentValue","$stateful","unwatch","$watchCollection","$on","invokeLinkFn","template","templateUrl","terminalPriority","newScopeDirective","nonTlbTranscludeDirective","hasTranscludeDirective","hasTemplate","$compileNode","$template","childTranscludeFn","$$start","$$end","directiveValue","assertNoDuplicate","$$tlb","createComment","replaceWith","replaceDirective","contents","denormalizeTemplate","removeComments","templateNamespace","newTemplateAttrs","templateDirectives","unprocessedDirectives","markDirectivesAsIsolate","mergeTemplateAttributes","compileTemplateUrl","Math","max","tDirectives","startAttrName","endAttrName","multiElement","srcAttr","dstAttr","$set","tAttrs","linkQueue","afterTemplateNodeLinkFn","afterTemplateChildLinkFn","beforeTemplateCompileNode","origAsyncDirective","derivedSyncDirective","getTrustedResourceUrl","then","content","tempTemplateAttrs","beforeTemplateLinkNode","linkRootElement","$$destroyed","oldClasses","delayedNodeLinkFn","ignoreChildLinkFn","diff","what","previousDirective","text","interpolateFn","textInterpolateCompileFn","templateNode","templateNodeParent","hasCompileParent","$$addBindingClass","textInterpolateLinkFn","$$addBindingInfo","expressions","interpolateFnWatchAction","wrapper","getTrustedContext","attrNormalizedName","HTML","RESOURCE_URL","allOrNothing","trustedContext","attrInterpolatePreLinkFn","newValue","$$inter","oldValue","$updateClass","elementsToRemove","newNode","firstElementToRemove","removeCount","j2","replaceChild","expando","k","kk","annotation","attributesToCopy","$normalize","$addClass","classVal","$removeClass","newClasses","toAdd","tokenDifference","toRemove","writeAttr","booleanKey","aliasedKey","observer","trimmedSrcset","srcPattern","rawUris","nbrUrisWith2parts","floor","innerIdx","lastTuple","removeAttr","listeners","startSymbol","endSymbol","binding","isolated","noTemplate","dataName","str1","str2","values","tokens1","tokens2","token","jqNodes","globals","CNTRL_REG","register","this.register","allowGlobals","this.allowGlobals","addIdentifier","expression","later","ident","$controllerMinErr","controllerPrototype","exception","cause","defaultHttpResponseTransform","headers","tempData","JSON_PROTECTION_PREFIX","contentType","jsonStart","JSON_START","JSON_ENDS","parseHeaders","line","headersGetter","headersObj","transformData","status","fns","defaults","transformResponse","transformRequest","d","common","CONTENT_TYPE_APPLICATION_JSON","patch","xsrfCookieName","xsrfHeaderName","useApplyAsync","this.useApplyAsync","interceptorFactories","interceptors","requestConfig","response","resp","reject","executeHeaderFns","headerContent","processedHeaders","headerFn","header","mergeHeaders","defHeaders","reqHeaders","defHeaderName","reqHeaderName","lowercaseDefHeaderName","chain","serverRequest","reqData","withCredentials","sendReq","promise","when","reversedInterceptors","interceptor","request","requestError","responseError","thenFn","rejectFn","success","promise.success","promise.error","done","headersString","statusText","resolveHttpPromise","resolvePromise","$applyAsync","$$phase","deferred","resolve","resolvePromiseWithResult","removePendingReq","pendingRequests","cachedResp","buildUrl","params","defaultCache","xsrfValue","urlIsSameOrigin","timeout","responseType","v","toISOString","interceptorFactory","createShortMethods","createShortMethodsWithData","createXhr","XMLHttpRequest","createHttpBackend","callbacks","$browserDefer","jsonpReq","callbackId","async","body","called","addEventListener","timeoutRequest","jsonpDone","xhr","abort","completeRequest","open","setRequestHeader","onload","xhr.onload","responseText","urlResolve","protocol","getAllResponseHeaders","onerror","onabort","send","this.startSymbol","this.endSymbol","escape","ch","mustHaveExpression","unescapeText","escapedStartRegexp","escapedEndRegexp","parseStringifyInterceptor","getTrusted","valueOf","newErr","$interpolateMinErr","endIndex","parseFns","textLength","expressionPositions","startSymbolLength","exp","endSymbolLength","compute","interpolationFn","$$watchDelegate","objectEquality","$watchGroup","interpolateFnWatcher","oldValues","currValue","$interpolate.startSymbol","$interpolate.endSymbol","count","invokeApply","setInterval","clearInterval","iteration","skipApply","$$intervalId","tick","notify","intervals","interval.cancel","NUMBER_FORMATS","DECIMAL_SEP","GROUP_SEP","PATTERNS","minInt","minFrac","maxFrac","posPre","posSuf","negPre","negSuf","gSize","lgSize","CURRENCY_SYM","DATETIME_FORMATS","MONTH","SHORTMONTH","DAY","SHORTDAY","AMPMS","medium","fullDate","longDate","mediumDate","shortDate","mediumTime","shortTime","ERANAMES","ERAS","pluralCat","num","encodePath","segments","parseAbsoluteUrl","absoluteUrl","locationObj","parsedUrl","$$protocol","$$host","hostname","$$port","port","DEFAULT_PORTS","parseAppUrl","relativeUrl","prefixed","$$path","pathname","$$search","search","$$hash","beginsWith","begin","whole","trimEmptyHash","stripFile","lastIndexOf","LocationHtml5Url","appBase","basePrefix","$$html5","appBaseNoFile","$$parse","this.$$parse","pathUrl","$locationMinErr","$$compose","this.$$compose","$$url","$$absUrl","$$parseLinkUrl","this.$$parseLinkUrl","relHref","appUrl","prevAppUrl","rewrittenUrl","LocationHashbangUrl","hashPrefix","withoutBaseUrl","withoutHashUrl","windowsFilePathExp","firstPathSegmentMatch","LocationHashbangInHtml5Url","locationGetter","property","locationGetterSetter","preprocess","html5Mode","requireBase","rewriteLinks","this.hashPrefix","this.html5Mode","setBrowserUrlWithFallback","oldUrl","oldState","$$state","afterLocationChange","$broadcast","absUrl","LocationMode","initialUrl","IGNORE_URI_REGEXP","ctrlKey","metaKey","shiftKey","which","button","target","absHref","preventDefault","initializing","newUrl","newState","$digest","$locationWatch","currentReplace","$$replace","urlOrStateChanged","debug","debugEnabled","this.debugEnabled","flag","formatError","Error","sourceURL","consoleLog","console","logFn","log","hasApply","arg1","arg2","ensureSafeMemberName","fullExpression","$parseMinErr","ensureSafeObject","children","isConstant","setter","setValue","fullExp","propertyObj","isPossiblyDangerousMemberName","cspSafeGetterFn","key0","key1","key2","key3","key4","expensiveChecks","eso","o","eso0","eso1","eso2","eso3","eso4","cspSafeGetter","pathVal","getterFnWithEnsureSafeObject","s","getterFn","getterFnCache","getterFnCacheExpensive","getterFnCacheDefault","pathKeys","pathKeysLength","code","needsEnsureSafeObject","lookupJs","evaledFnGetter","Function","sharedGetter","fn.assign","getValueOf","objectValueOf","cacheDefault","cacheExpensive","wrapSharedExpression","wrapped","collectExpressionInputs","inputs","expressionInputDirtyCheck","oldValueOfValue","inputsWatchDelegate","parsedExpression","inputExpressions","$$inputs","lastResult","oldInputValue","expressionInputWatch","newInputValue","oldInputValueOfValues","expressionInputsWatch","changed","oneTimeWatchDelegate","oneTimeWatch","oneTimeListener","old","$$postDigest","oneTimeLiteralWatchDelegate","isAllDefined","allDefined","constantWatchDelegate","constantWatch","constantListener","addInterceptor","interceptorFn","watchDelegate","regularInterceptedExpression","oneTimeInterceptedExpression","$parseOptions","$parseOptionsExpensive","oneTime","cacheKey","parseOptions","lexer","Lexer","parser","Parser","qFactory","nextTick","exceptionHandler","callOnce","resolveFn","Promise","simpleBind","scheduleProcessQueue","processScheduled","pending","Deferred","$qMinErr","TypeError","onFulfilled","onRejected","progressBack","catch","finally","handleCallback","$$reject","$$resolve","progress","makePromise","resolved","isResolved","callbackOutput","errback","$Q","Q","resolver","all","promises","results","requestAnimationFrame","webkitRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","webkitCancelRequestAnimationFrame","rafSupported","raf","timer","createChildScopeClass","ChildScope","$$watchers","$$nextSibling","$$childHead","$$childTail","$$listeners","$$listenerCount","$$watchersCount","$id","$$ChildScope","TTL","$rootScopeMinErr","lastDirtyWatch","applyAsyncId","digestTtl","this.digestTtl","destroyChildScope","$event","currentScope","Scope","$parent","$$prevSibling","$root","beginPhase","phase","decrementListenerCount","current","initWatchVal","flushApplyAsync","applyAsyncQueue","scheduleApplyAsync","isolate","child","watchExp","watcher","last","eq","deregisterWatch","watchExpressions","watchGroupAction","changeReactionScheduled","firstRun","newValues","deregisterFns","shouldCall","deregisterWatchGroup","expr","unwatchFn","watchGroupSubAction","$watchCollectionInterceptor","_value","bothNaN","newItem","oldItem","internalArray","oldLength","changeDetected","newLength","internalObject","veryOldValue","trackVeryOldValue","changeDetector","initRun","$watchCollectionAction","watch","watchers","dirty","ttl","watchLog","logIdx","asyncTask","asyncQueue","$eval","isNaN","msg","next","postDigestQueue","eventName","this.$watchGroup","$applyAsyncExpression","namedListeners","indexOfListener","$emit","targetScope","listenerArgs","$$asyncQueue","$$postDigestQueue","$$applyAsyncQueue","sanitizeUri","uri","isImage","regex","normalizedVal","adjustMatcher","matcher","$sceMinErr","escapeForRegexp","adjustMatchers","matchers","adjustedMatchers","SCE_CONTEXTS","resourceUrlWhitelist","resourceUrlBlacklist","this.resourceUrlWhitelist","this.resourceUrlBlacklist","matchUrl","generateHolderType","Base","holderType","trustedValue","$$unwrapTrustedValue","this.$$unwrapTrustedValue","holderType.prototype.valueOf","holderType.prototype.toString","htmlSanitizer","trustedValueHolderBase","byType","CSS","URL","JS","trustAs","Constructor","maybeTrusted","allowed","this.enabled","msie","sce","isEnabled","sce.isEnabled","sce.getTrusted","parseAs","sce.parseAs","enumValue","lName","eventSupport","android","userAgent","navigator","boxee","vendorPrefix","vendorRegex","bodyStyle","transitions","animations","webkitTransition","webkitAnimation","pushState","hasEvent","divElm","handleRequestFn","tpl","ignoreRequestError","totalPendingRequests","transformer","httpOptions","handleError","testability","testability.findBindings","opt_exactMatch","getElementsByClassName","matches","dataBinding","bindingName","testability.findModels","prefixes","attributeEquals","testability.getLocation","testability.setLocation","testability.whenStable","deferreds","$$timeoutId","timeout.cancel","urlParsingNode","requestUrl","originUrl","filters","suffix","currencyFilter","dateFilter","filterFilter","jsonFilter","limitToFilter","lowercaseFilter","numberFilter","orderByFilter","uppercaseFilter","comparator","matchAgainstAnyProp","predicateFn","createPredicateFn","shouldMatchPrimitives","actual","expected","item","deepCompare","dontMatchWholeObject","actualType","expectedType","expectedVal","matchAnyProperty","actualVal","$locale","formats","amount","currencySymbol","fractionSize","formatNumber","number","groupSep","decimalSep","isFinite","isNegative","abs","numStr","formatedText","hasExponent","toFixed","parseFloat","fractionLen","min","round","fraction","lgroup","group","padNumber","digits","neg","dateGetter","date","dateStrGetter","shortForm","getFirstThursdayOfYear","year","dayOfWeekOnFirst","getDay","weekGetter","firstThurs","getFullYear","thisThurs","getMonth","getDate","eraGetter","jsonStringToDate","string","R_ISO8601_STR","tzHour","tzMin","dateSetter","setUTCFullYear","setFullYear","timeSetter","setUTCHours","setHours","m","ms","format","timezone","NUMBER_STRING","DATE_FORMATS_SPLIT","setMinutes","getMinutes","getTimezoneOffset","DATE_FORMATS","object","spacing","limit","Infinity","sortPredicate","reverseOrder","reverseComparator","comp","descending","objectToString","v1","v2","map","predicate","ngDirective","FormController","controls","parentForm","$$parentForm","nullFormCtrl","$error","$$success","$pending","$name","$dirty","$pristine","$valid","$invalid","$submitted","$addControl","$rollbackViewValue","form.$rollbackViewValue","control","$commitViewValue","form.$commitViewValue","form.$addControl","$$renameControl","form.$$renameControl","newName","oldName","$removeControl","form.$removeControl","$setValidity","addSetValidityMethod","ctrl","set","unset","$setDirty","form.$setDirty","PRISTINE_CLASS","DIRTY_CLASS","$setPristine","form.$setPristine","setClass","SUBMITTED_CLASS","$setUntouched","form.$setUntouched","$setSubmitted","form.$setSubmitted","stringBasedInputType","$formatters","$isEmpty","baseInputType","composing","ev","ngTrim","$viewValue","$$hasNativeValidators","$setViewValue","deferListener","origValue","keyCode","$render","ctrl.$render","createDateParser","mapping","iso","ISO_DATE_REGEXP","yyyy","MM","dd","HH","getHours","mm","ss","getSeconds","sss","getMilliseconds","part","NaN","createDateInputType","parseDate","dynamicDateInputType","isValidDate","parseObservedDateValue","badInputChecker","$options","previousDate","$$parserName","$parsers","parsedDate","$ngModelMinErr","timezoneOffset","ngMin","minVal","$validators","ctrl.$validators.min","$validate","ngMax","maxVal","ctrl.$validators.max","validity","VALIDITY_STATE_PROPERTY","badInput","typeMismatch","parseConstantExpr","fallback","parseFn","classDirective","arrayDifference","arrayClasses","digestClassCounts","classCounts","classesToUpdate","ngClassWatchAction","$index","old$index","mod","cachedToggleClass","switchValue","classCache","toggleValidationCss","validationErrorKey","isValid","VALID_CLASS","INVALID_CLASS","setValidity","isObjectEmpty","PENDING_CLASS","combinedState","REGEX_STRING_REGEXP","documentMode","isActive_","active","full","major","minor","dot","codeName","JQLite._data","MOUSE_EVENT_MAP","mouseleave","mouseenter","optgroup","tbody","tfoot","colgroup","caption","thead","th","td","ready","trigger","fired","removeData","removeAttribute","css","lowercasedName","specified","getNamedItem","ret","getText","$dv","multiple","selected","nodeCount","jqLiteOn","types","related","relatedTarget","contains","off","one","onFn","replaceNode","insertBefore","contentDocument","prepend","wrapNode","detach","after","newElement","toggleClass","condition","classCondition","nextElementSibling","getElementsByTagName","extraParameters","dummyEvent","handlerArgs","eventFnsCopy","arg3","unbind","FN_ARG_SPLIT","FN_ARG","argDecl","underscore","$animateMinErr","$$selectors","classNameFilter","this.classNameFilter","$$classNameFilter","runAnimationPostDigest","cancelFn","$$cancelFn","defer.promise.$$cancelFn","ngAnimatePostDigest","ngAnimateNotifyComplete","resolveElementClasses","hasClasses","cachedClassManipulation","op","asyncPromise","currentDefer","applyStyles","styles","from","to","animate","enter","leave","move","$$addClassImmediately","$$removeClassImmediately","add","createdCache","STORAGE_KEY","$$setClassImmediately","APPLICATION_JSON","PATH_MATCH","locationPrototype","paramValue","Location","Location.prototype.state","CALL","APPLY","BIND","CONSTANTS","null","true","false","constantGetter","OPERATORS","+","-","*","/","%","===","!==","==","!=","<",">","<=",">=","&&","||","!","ESCAPE","lex","tokens","readString","peek","readNumber","isIdent","readIdent","is","isWhitespace","ch2","ch3","op2","op3","op1","operator","throwError","chars","isExpOperator","start","end","colStr","peekCh","quote","rawString","hex","String","fromCharCode","rep","ZERO","statements","primary","expect","filterChain","consume","arrayDeclaration","functionCall","objectIndex","fieldAccess","peekToken","e1","e2","e3","e4","peekAhead","t","unaryFn","right","$parseUnaryFn","binaryFn","left","isBranching","$parseBinaryFn","$parseConstant","$parseStatements","inputFn","argsFn","$parseFilter","every","assignment","ternary","$parseAssignment","logicalOR","middle","$parseTernary","logicalAND","equality","relational","additive","multiplicative","unary","$parseFieldAccess","indexFn","$parseObjectIndex","fnGetter","contextGetter","expressionText","$parseFunctionCall","elementFns","$parseArrayLiteral","valueFns","$parseObjectLiteral","yy","y","MMMM","MMM","M","H","hh","EEEE","EEE","ampmGetter","Z","timeZoneGetter","zone","paddedZone","ww","w","G","GG","GGG","GGGG","longEraGetter","xlinkHref","propName","normalized","ngBooleanAttrWatchAction","htmlAttr","ngAttrAliasWatchAction","nullFormRenameControl","formDirectiveFactory","isNgForm","ngFormCompile","formElement","nameAttr","ngFormPreLink","handleFormSubmission","parentFormCtrl","URL_REGEXP","EMAIL_REGEXP","NUMBER_REGEXP","DATE_REGEXP","DATETIMELOCAL_REGEXP","WEEK_REGEXP","MONTH_REGEXP","TIME_REGEXP","inputType","textInputType","weekParser","isoWeek","existingDate","week","minutes","hours","seconds","milliseconds","addDays","numberInputType","urlInputType","ctrl.$validators.url","modelValue","viewValue","emailInputType","email","ctrl.$validators.email","radioInputType","checked","checkboxInputType","trueValue","ngTrueValue","falseValue","ngFalseValue","ctrl.$isEmpty","ctrls","CONSTANT_VALUE_REGEXP","tplAttr","ngValueConstantLink","ngValueLink","valueWatchAction","$compile","ngBindCompile","templateElement","ngBindLink","ngBindWatchAction","ngBindTemplateCompile","ngBindTemplateLink","ngBindHtmlCompile","tElement","ngBindHtmlGetter","ngBindHtmlWatch","getStringValue","ngBindHtmlLink","ngBindHtmlWatchAction","getTrustedHtml","$viewChangeListeners","forceAsyncEvents","ngEventHandler","previousElements","ngIfWatchAction","newScope","srcExp","onloadExp","autoScrollExp","autoscroll","changeCounter","previousElement","currentElement","cleanupLastIncludeContent","parseAsResourceUrl","ngIncludeWatchAction","afterAnimation","thisChangeId","namespaceAdaptedClone","trimValues","NgModelController","$modelValue","$$rawModelValue","$asyncValidators","$untouched","$touched","parsedNgModel","parsedNgModelAssign","ngModelGet","ngModelSet","pendingDebounce","parserValid","$$setOptions","this.$$setOptions","getterSetter","invokeModelGetter","invokeModelSetter","$$$p","this.$isEmpty","currentValidationRunId","this.$setPristine","this.$setDirty","this.$setUntouched","UNTOUCHED_CLASS","TOUCHED_CLASS","$setTouched","this.$setTouched","this.$rollbackViewValue","$$lastCommittedViewValue","this.$validate","prevValid","prevModelValue","allowInvalid","$$runValidators","allValid","$$writeModelToScope","this.$$runValidators","doneCallback","processSyncValidators","syncValidatorsValid","validator","processAsyncValidators","validatorPromises","validationDone","localValidationRunId","processParseErrors","errorKey","this.$commitViewValue","$$parseAndValidate","this.$$parseAndValidate","this.$$writeModelToScope","this.$setViewValue","updateOnDefault","$$debounceViewValueCommit","this.$$debounceViewValueCommit","debounceDelay","debounce","ngModelWatch","formatters","ngModelCompile","ngModelPreLink","modelCtrl","formCtrl","ngModelPostLink","updateOn","DEFAULT_REGEXP","that","BRACE","IS_WHEN","updateElementText","newText","numberExp","whenExp","whens","whensExpFns","braceReplacement","watchRemover","lastCount","attributeName","tmpMatch","whenKey","ngPluralizeWatchAction","countIsNaN","ngRepeatMinErr","updateScope","valueIdentifier","keyIdentifier","arrayLength","$first","$last","$middle","$odd","$even","ngRepeatCompile","ngRepeatEndComment","lhs","rhs","aliasAs","trackByExp","trackByExpGetter","trackByIdExpFn","trackByIdArrayFn","trackByIdObjFn","hashFnLocals","ngRepeatLink","lastBlockMap","ngRepeatAction","previousNode","nextNode","nextBlockMap","collectionLength","trackById","collectionKeys","nextBlockOrder","trackByIdFn","itemKey","blockKey","ngRepeatTransclude","ngShowWatchAction","NG_HIDE_CLASS","tempClasses","NG_HIDE_IN_PROGRESS_CLASS","ngHideWatchAction","ngStyleWatchAction","newStyles","oldStyles","ngSwitchController","cases","selectedTranscludes","selectedElements","previousLeaveAnimations","selectedScopes","spliceFactory","ngSwitchWatchAction","selectedTransclude","caseElement","selectedScope","anchor","ngOptionsMinErr","NG_OPTIONS_REGEXP","nullModelCtrl","optionsMap","ngModelCtrl","unknownOption","databound","init","self.init","ngModelCtrl_","nullOption_","unknownOption_","addOption","self.addOption","removeOption","self.removeOption","hasOption","renderUnknownOption","self.renderUnknownOption","unknownVal","self.hasOption","setupAsSingle","selectElement","selectCtrl","ngModelCtrl.$render","emptyOption","setupAsMultiple","lastView","selectMultipleWatch","setupAsOptions","callExpression","exprFn","valueName","keyName","createIsSelectedFn","selectedSet","trackFn","trackIndex","isSelected","compareValueFn","selectAsFn","scheduleRendering","renderScheduled","render","updateLabelMap","labelMap","label","added","optionGroups","optionGroupNames","optionGroupName","optionGroup","existingParent","existingOptions","existingOption","valuesFn","anySelected","optionId","trackKeysCache","groupByFn","displayFn","nullOption","groupIndex","groupLength","optionGroupsCache","optGroupTemplate","lastElement","optionTemplate","optionsExp","selectAs","track","selectionChanged","selectedKey","viewValueFn","getLabels","toDisplay","ngModelCtrl.$isEmpty","nullSelectCtrl","selectCtrlName","interpolateWatchAction","ctrl.$validators.required","patternExp","ctrl.$validators.pattern","intVal","ctrl.$validators.maxlength","ctrl.$validators.minlength","$$csp"] } diff --git a/data-mgmt/src/main/webapp/bower_components/angular/bower.json b/data-mgmt/src/main/webapp/bower_components/angular/bower.json index 2bdb1eb..2039c74 100644 --- a/data-mgmt/src/main/webapp/bower_components/angular/bower.json +++ b/data-mgmt/src/main/webapp/bower_components/angular/bower.json @@ -1,6 +1,6 @@ { "name": "angular", - "version": "1.3.4", + "version": "1.3.15", "main": "./angular.js", "ignore": [], "dependencies": { diff --git a/data-mgmt/src/main/webapp/bower_components/angular/index.js b/data-mgmt/src/main/webapp/bower_components/angular/index.js new file mode 100644 index 0000000..5c1aafc --- /dev/null +++ b/data-mgmt/src/main/webapp/bower_components/angular/index.js @@ -0,0 +1,2 @@ +require('./angular'); +module.exports = angular; diff --git a/data-mgmt/src/main/webapp/bower_components/angular/package.json b/data-mgmt/src/main/webapp/bower_components/angular/package.json index 532de56..abfd514 100644 --- a/data-mgmt/src/main/webapp/bower_components/angular/package.json +++ b/data-mgmt/src/main/webapp/bower_components/angular/package.json @@ -1,8 +1,8 @@ { "name": "angular", - "version": "1.3.4", + "version": "1.3.15", "description": "HTML enhanced for web apps", - "main": "angular.js", + "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/.bower.json b/data-mgmt/src/main/webapp/bower_components/jsoneditor/.bower.json index c080ef4..cea2ff9 100644 --- a/data-mgmt/src/main/webapp/bower_components/jsoneditor/.bower.json +++ b/data-mgmt/src/main/webapp/bower_components/jsoneditor/.bower.json @@ -1,6 +1,6 @@ { "name": "jsoneditor", - "version": "3.1.2", + "version": "4.1.3", "description": "A web-based tool to view, edit and format JSON", "tags": [ "json", @@ -13,32 +13,30 @@ "type": "git", "url": "https://github.com/josdejong/jsoneditor.git" }, - "main": "jsoneditor.min.js", + "main": [ + "./dist/jsoneditor.min.js", + "./dist/jsoneditor.min.css" + ], "bugs": "https://github.com/josdejong/jsoneditor/issues", "ignore": [ - "app", - "build", - "downloads", - "src", "misc", "node_modules", "test", "tools", - ".idea", "gulpfile.js", - "package.json", + "npm-debug.log", + ".idea", ".npmignore", ".gitignore" ], "dependencies": {}, - "_release": "3.1.2", + "_release": "4.1.3", "_resolution": { "type": "version", - "tag": "v3.1.2", - "commit": "b03dd76c8135568c88cf116d3ad97bee3452f79b" + "tag": "v4.1.3", + "commit": "053f4f5113ba597bf6bcee69fd31145baf4bb6af" }, "_source": "git://github.com/josdejong/jsoneditor.git", - "_target": "~3.1.2", - "_originalSource": "jsoneditor", - "_direct": true + "_target": "~4.1.3", + "_originalSource": "jsoneditor" } \ No newline at end of file diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/CONTRIBUTING.md b/data-mgmt/src/main/webapp/bower_components/jsoneditor/CONTRIBUTING.md new file mode 100644 index 0000000..782ae59 --- /dev/null +++ b/data-mgmt/src/main/webapp/bower_components/jsoneditor/CONTRIBUTING.md @@ -0,0 +1,17 @@ +## Contributing + +Contributions to the `jsoneditor` library are very welcome! We can't do this +alone. You can contribute in different ways: spread the word, report bugs, come +up with ideas and suggestions, and contribute to the code. + +There are a few preferences regarding code contributions: + +- `jsoneditor` follows the node.js code style as described + [here](http://nodeguide.com/style.html). +- Send pull requests to the `develop` branch, not the `master` branch. +- Only commit changes done in the source files under `src`, not to the builds + which are located in the root of the project (like `jsoneditor.js`, + `jsoneditor.css`, etc. + +Thanks! + diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/HISTORY.md b/data-mgmt/src/main/webapp/bower_components/jsoneditor/HISTORY.md index 45b670f..48d15a8 100644 --- a/data-mgmt/src/main/webapp/bower_components/jsoneditor/HISTORY.md +++ b/data-mgmt/src/main/webapp/bower_components/jsoneditor/HISTORY.md @@ -3,6 +3,53 @@ https://github.com/josdejong/jsoneditor +## 2015-03-17, version 4.1.3 + +- Fixed broken bundling with browserify: the `jsonlint` package was requiring + missing dependencies. + + +## 2015-03-15, version 4.1.2 + +- Fixed broken bower package 4.1.1. + + +## 2015-03-15, version 4.1.1 + +- Added missing file `index.js` to the bower package. + + +## 2015-03-15, version 4.1.0 + +- Implemented a function `focus()` for modes tree, view, and form. +- Added `./src` folder to the distributed package, needed for usage via + node.js/browserify. + + +## 2015-02-28, version 4.0.0 + +- Ace editor and jsonlint are now packed with jsoneditor.js by default. + This makes the library about 4 times larger. If Ace is not needed, a custom + build of the library can be done. +- The distribution files are now moved from the root to the `/dist` folder. +- Reworked the source code to CommonJS modules, using `brace` to load Ace. +- JSONP is now automatically stripped from JSON. Thanks @yanivefraim. +- Fixed bugs in the JSON sanitizer, no longer manipulating JSON-like structures + inside strings. + + +## 2015-01-25, version 3.2.0 + +- Implemented shortcut keys `Ctrl+\` to format and `Ctrl+Shift+\` to compact + JSON when in mode `text` or `code`. +- Before an error is thrown because of invalid text, the editor first tries to + sanitize the text (replace JavaScript notation with JSON notation), and only + after that throws the error. +- Fixed Node.path() not working for a JSON Object `""`. Thanks @tomalec. +- Minor styling improvements. +- Fixed configured indentation not being applied to Ace editor. + + ## 2014-09-03, version 3.1.2 - Some fixes/improvements in `parseJS` (to parse a JSON object from a JavaScript diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/NOTICE b/data-mgmt/src/main/webapp/bower_components/jsoneditor/NOTICE index d8a1e43..ff2aa45 100644 --- a/data-mgmt/src/main/webapp/bower_components/jsoneditor/NOTICE +++ b/data-mgmt/src/main/webapp/bower_components/jsoneditor/NOTICE @@ -1,7 +1,7 @@ JSON Editor https://github.com/josdejong/jsoneditor -Copyright (C) 2011-2014 Jos de Jong +Copyright (C) 2011-2015 Jos de Jong Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/README.md b/data-mgmt/src/main/webapp/bower_components/jsoneditor/README.md index c09c224..f50aba7 100644 --- a/data-mgmt/src/main/webapp/bower_components/jsoneditor/README.md +++ b/data-mgmt/src/main/webapp/bower_components/jsoneditor/README.md @@ -6,7 +6,7 @@ Website: http://jsoneditoronline.org/ Github: https://github.com/josdejong/jsoneditor -### Description +## Description JSON Editor is a web-based tool to view, edit, and format JSON. It has various modes such as a tree editor, a code editor, and a plain text @@ -22,9 +22,9 @@ Supported browsers: Chrome, Firefox, Safari, Opera, Internet Explorer 9+. code editor -### Features +## Features -#### Tree editor +### Tree editor - Edit, add, move, remove, and duplicate fields and values. - Change type of values. - Sort arrays and objects. @@ -32,16 +32,16 @@ Supported browsers: Chrome, Firefox, Safari, Opera, Internet Explorer 9+. - Search & highlight text in the treeview. - Undo and redo all actions. -#### Code editor +### Code editor - Format and compact JSON. - Colorized code (powered by Ace). - Inspect JSON (powered by Ace). -#### Text editor +### Text editor - Format and compact JSON. -### Documentation +## Documentation - Documentation: - [API](https://github.com/josdejong/jsoneditor/tree/master/docs/api.md) @@ -52,7 +52,7 @@ Supported browsers: Chrome, Firefox, Safari, Opera, Internet Explorer 9+. - [History](https://github.com/josdejong/jsoneditor/blob/master/HISTORY.md) -### Install +## Install with npm: @@ -67,19 +67,19 @@ download: [http://jsoneditoronline.org/downloads/](http://jsoneditoronline.org/downloads/) -### Use +## Use ```html - - + +

    - -``` - -### Detailed error messages - -Optionally, [jsonlint](https://github.com/zaach/jsonlint) can be loaded to get -more detailed error messages. - -```html - -``` - -### Code editor - -The mode 'code' requires the [Ace editor](http://ace.ajax.org/) to be loaded. -JSON Editor comes with a custom built version of Ace containing the ace modules -`ace.js`, `ext-searchbox.js`, `mode-json.js`, `theme-textmate.js`, and a custom -theme `theme-jsoneditor.js`. -Besides loading ace, the content type must be specified on the page. - -```html - - - + + ``` ## Use @@ -95,8 +72,8 @@ var json = editor.get(); - - + +

    @@ -105,7 +82,7 @@ var json = editor.get();

    - + + + + - + diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/examples/requirejs_demo/scripts/main.js b/data-mgmt/src/main/webapp/bower_components/jsoneditor/examples/requirejs_demo/scripts/main.js index 7c7c94f..4303b1a 100644 --- a/data-mgmt/src/main/webapp/bower_components/jsoneditor/examples/requirejs_demo/scripts/main.js +++ b/data-mgmt/src/main/webapp/bower_components/jsoneditor/examples/requirejs_demo/scripts/main.js @@ -1,4 +1,4 @@ -var module = '../../../jsoneditor'; +var module = '../../../dist/jsoneditor'; require([module], function (JSONEditor) { // create the editor var container = document.getElementById('jsoneditor'); diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/index.js b/data-mgmt/src/main/webapp/bower_components/jsoneditor/index.js new file mode 100644 index 0000000..8442caf --- /dev/null +++ b/data-mgmt/src/main/webapp/bower_components/jsoneditor/index.js @@ -0,0 +1 @@ +module.exports = require('./src/js/JSONEditor'); diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/jsoneditor.js b/data-mgmt/src/main/webapp/bower_components/jsoneditor/jsoneditor.js deleted file mode 100644 index 827db78..0000000 --- a/data-mgmt/src/main/webapp/bower_components/jsoneditor/jsoneditor.js +++ /dev/null @@ -1,6264 +0,0 @@ -/*! - * jsoneditor.js - * - * @brief - * JSONEditor is a web-based tool to view, edit, and format JSON. - * It shows data a clear, editable treeview. - * - * Supported browsers: Chrome, Firefox, Safari, Opera, Internet Explorer 8+ - * - * @license - * 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 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - * - * Copyright (c) 2011-2014 Jos de Jong, http://jsoneditoronline.org - * - * @author Jos de Jong, - * @version 3.1.2 - * @date 2014-09-03 - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define(factory); - else if(typeof exports === 'object') - exports["JSONEditor"] = factory(); - else - root["JSONEditor"] = factory(); -})(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) -/******/ return installedModules[moduleId].exports; -/******/ -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ exports: {}, -/******/ id: moduleId, -/******/ loaded: false -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.loaded = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1), __webpack_require__(2), __webpack_require__(3)], __WEBPACK_AMD_DEFINE_RESULT__ = function (treemode, textmode, util) { - - /** - * @constructor JSONEditor - * @param {Element} container Container element - * @param {Object} [options] Object with options. available options: - * {String} mode Editor mode. Available values: - * 'tree' (default), 'view', - * 'form', 'text', and 'code'. - * {function} change Callback method, triggered - * on change of contents - * {Boolean} search Enable search box. - * True by default - * Only applicable for modes - * 'tree', 'view', and 'form' - * {Boolean} history Enable history (undo/redo). - * True by default - * Only applicable for modes - * 'tree', 'view', and 'form' - * {String} name Field name for the root node. - * Only applicable for modes - * 'tree', 'view', and 'form' - * {Number} indentation Number of indentation - * spaces. 4 by default. - * Only applicable for - * modes 'text' and 'code' - * @param {Object | undefined} json JSON object - */ - function JSONEditor (container, options, json) { - if (!(this instanceof JSONEditor)) { - throw new Error('JSONEditor constructor called without "new".'); - } - - // check for unsupported browser (IE8 and older) - var ieVersion = util.getInternetExplorerVersion(); - if (ieVersion != -1 && ieVersion < 9) { - throw new Error('Unsupported browser, IE9 or newer required. ' + - 'Please install the newest version of your browser.'); - } - - if (arguments.length) { - this._create(container, options, json); - } - } - - /** - * Configuration for all registered modes. Example: - * { - * tree: { - * mixin: TreeEditor, - * data: 'json' - * }, - * text: { - * mixin: TextEditor, - * data: 'text' - * } - * } - * - * @type { Object. } - */ - JSONEditor.modes = {}; - - /** - * Create the JSONEditor - * @param {Element} container Container element - * @param {Object} [options] See description in constructor - * @param {Object | undefined} json JSON object - * @private - */ - JSONEditor.prototype._create = function (container, options, json) { - this.container = container; - this.options = options || {}; - this.json = json || {}; - - var mode = this.options.mode || 'tree'; - this.setMode(mode); - }; - - /** - * Detach the editor from the DOM - * @private - */ - JSONEditor.prototype._delete = function () {}; - - /** - * Set JSON object in editor - * @param {Object | undefined} json JSON data - */ - JSONEditor.prototype.set = function (json) { - this.json = json; - }; - - /** - * Get JSON from the editor - * @returns {Object} json - */ - JSONEditor.prototype.get = function () { - return this.json; - }; - - /** - * Set string containing JSON for the editor - * @param {String | undefined} jsonText - */ - JSONEditor.prototype.setText = function (jsonText) { - this.json = util.parse(jsonText); - }; - - /** - * Get stringified JSON contents from the editor - * @returns {String} jsonText - */ - JSONEditor.prototype.getText = function () { - return JSON.stringify(this.json); - }; - - /** - * Set a field name for the root node. - * @param {String | undefined} name - */ - JSONEditor.prototype.setName = function (name) { - if (!this.options) { - this.options = {}; - } - this.options.name = name; - }; - - /** - * Get the field name for the root node. - * @return {String | undefined} name - */ - JSONEditor.prototype.getName = function () { - return this.options && this.options.name; - }; - - /** - * Change the mode of the editor. - * JSONEditor will be extended with all methods needed for the chosen mode. - * @param {String} mode Available modes: 'tree' (default), 'view', 'form', - * 'text', and 'code'. - */ - JSONEditor.prototype.setMode = function (mode) { - var container = this.container, - options = util.extend({}, this.options), - data, - name; - - options.mode = mode; - var config = JSONEditor.modes[mode]; - if (config) { - try { - var asText = (config.data == 'text'); - name = this.getName(); - data = this[asText ? 'getText' : 'get'](); // get text or json - - this._delete(); - util.clear(this); - util.extend(this, config.mixin); - this.create(container, options); - - this.setName(name); - this[asText ? 'setText' : 'set'](data); // set text or json - - if (typeof config.load === 'function') { - try { - config.load.call(this); - } - catch (err) {} - } - } - catch (err) { - this._onError(err); - } - } - else { - throw new Error('Unknown mode "' + options.mode + '"'); - } - }; - - /** - * Throw an error. If an error callback is configured in options.error, this - * callback will be invoked. Else, a regular error is thrown. - * @param {Error} err - * @private - */ - JSONEditor.prototype._onError = function(err) { - // TODO: onError is deprecated since version 2.2.0. cleanup some day - if (typeof this.onError === 'function') { - util.log('WARNING: JSONEditor.onError is deprecated. ' + - 'Use options.error instead.'); - this.onError(err); - } - - if (this.options && typeof this.options.error === 'function') { - this.options.error(err); - } - else { - throw err; - } - }; - - /** - * Register a plugin with one ore multiple modes for the JSON Editor. - * - * A mode is described as an object with properties: - * - * - `mode: String` The name of the mode. - * - `mixin: Object` An object containing the mixin functions which - * will be added to the JSONEditor. Must contain functions - * create, get, getText, set, and setText. May have - * additional functions. - * When the JSONEditor switches to a mixin, all mixin - * functions are added to the JSONEditor, and then - * the function `create(container, options)` is executed. - * - `data: 'text' | 'json'` The type of data that will be used to load the mixin. - * - `[load: function]` An optional function called after the mixin - * has been loaded. - * - * @param {Object | Array} mode A mode object or an array with multiple mode objects. - */ - JSONEditor.registerMode = function (mode) { - var i, prop; - - if (util.isArray(mode)) { - // multiple modes - for (i = 0; i < mode.length; i++) { - JSONEditor.registerMode(mode[i]); - } - } - else { - // validate the new mode - if (!('mode' in mode)) throw new Error('Property "mode" missing'); - if (!('mixin' in mode)) throw new Error('Property "mixin" missing'); - if (!('data' in mode)) throw new Error('Property "data" missing'); - var name = mode.mode; - if (name in JSONEditor.modes) { - throw new Error('Mode "' + name + '" already registered'); - } - - // validate the mixin - if (typeof mode.mixin.create !== 'function') { - throw new Error('Required function "create" missing on mixin'); - } - var reserved = ['setMode', 'registerMode', 'modes']; - for (i = 0; i < reserved.length; i++) { - prop = reserved[i]; - if (prop in mode.mixin) { - throw new Error('Reserved property "' + prop + '" not allowed in mixin'); - } - } - - JSONEditor.modes[name] = mode; - } - }; - - // register tree and text modes - JSONEditor.registerMode(treemode); - JSONEditor.registerMode(textmode); - - return JSONEditor; - }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - -/***/ }, -/* 1 */ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(4), __webpack_require__(5), __webpack_require__(6), __webpack_require__(7), __webpack_require__(8), __webpack_require__(3)], __WEBPACK_AMD_DEFINE_RESULT__ = function (Highlighter, History, SearchBox, Node, modeswitcher, util) { - - // create a mixin with the functions for tree mode - var treemode = {}; - - /** - * Create a tree editor - * @param {Element} container Container element - * @param {Object} [options] Object with options. available options: - * {String} mode Editor mode. Available values: - * 'tree' (default), 'view', - * and 'form'. - * {Boolean} search Enable search box. - * True by default - * {Boolean} history Enable history (undo/redo). - * True by default - * {function} change Callback method, triggered - * on change of contents - * {String} name Field name for the root node. - * @private - */ - treemode.create = function (container, options) { - if (!container) { - throw new Error('No container element provided.'); - } - this.container = container; - this.dom = {}; - this.highlighter = new Highlighter(); - this.selection = undefined; // will hold the last input selection - - this._setOptions(options); - - if (this.options.history && this.options.mode !== 'view') { - this.history = new History(this); - } - - this._createFrame(); - this._createTable(); - }; - - /** - * Detach the editor from the DOM - * @private - */ - treemode._delete = function () { - if (this.frame && this.container && this.frame.parentNode == this.container) { - this.container.removeChild(this.frame); - } - }; - - /** - * Initialize and set default options - * @param {Object} [options] See description in constructor - * @private - */ - treemode._setOptions = function (options) { - this.options = { - search: true, - history: true, - mode: 'tree', - name: undefined // field name of root node - }; - - // copy all options - if (options) { - for (var prop in options) { - if (options.hasOwnProperty(prop)) { - this.options[prop] = options[prop]; - } - } - } - }; - - // node currently being edited - var focusNode = undefined; - - // dom having focus - var domFocus = null; - - /** - * Set JSON object in editor - * @param {Object | undefined} json JSON data - * @param {String} [name] Optional field name for the root node. - * Can also be set using setName(name). - */ - treemode.set = function (json, name) { - // adjust field name for root node - if (name) { - // TODO: deprecated since version 2.2.0. Cleanup some day. - util.log('Warning: second parameter "name" is deprecated. ' + - 'Use setName(name) instead.'); - this.options.name = name; - } - - // verify if json is valid JSON, ignore when a function - if (json instanceof Function || (json === undefined)) { - this.clear(); - } - else { - this.content.removeChild(this.table); // Take the table offline - - // replace the root node - var params = { - 'field': this.options.name, - 'value': json - }; - var node = new Node(this, params); - this._setRoot(node); - - // expand - var recurse = false; - this.node.expand(recurse); - - this.content.appendChild(this.table); // Put the table online again - } - - // TODO: maintain history, store last state and previous document - if (this.history) { - this.history.clear(); - } - }; - - /** - * Get JSON object from editor - * @return {Object | undefined} json - */ - treemode.get = function () { - // remove focus from currently edited node - if (focusNode) { - focusNode.blur(); - } - - if (this.node) { - return this.node.getValue(); - } - else { - return undefined; - } - }; - - /** - * Get the text contents of the editor - * @return {String} jsonText - */ - treemode.getText = function() { - return JSON.stringify(this.get()); - }; - - /** - * Set the text contents of the editor - * @param {String} jsonText - */ - treemode.setText = function(jsonText) { - this.set(util.parse(jsonText)); - }; - - /** - * Set a field name for the root node. - * @param {String | undefined} name - */ - treemode.setName = function (name) { - this.options.name = name; - if (this.node) { - this.node.updateField(this.options.name); - } - }; - - /** - * Get the field name for the root node. - * @return {String | undefined} name - */ - treemode.getName = function () { - return this.options.name; - }; - - /** - * Remove the root node from the editor - */ - treemode.clear = function () { - if (this.node) { - this.node.collapse(); - this.tbody.removeChild(this.node.getDom()); - delete this.node; - } - }; - - /** - * Set the root node for the json editor - * @param {Node} node - * @private - */ - treemode._setRoot = function (node) { - this.clear(); - - this.node = node; - - // append to the dom - this.tbody.appendChild(node.getDom()); - }; - - /** - * Search text in all nodes - * The nodes will be expanded when the text is found one of its childs, - * else it will be collapsed. Searches are case insensitive. - * @param {String} text - * @return {Object[]} results Array with nodes containing the search results - * The result objects contains fields: - * - {Node} node, - * - {String} elem the dom element name where - * the result is found ('field' or - * 'value') - */ - treemode.search = function (text) { - var results; - if (this.node) { - this.content.removeChild(this.table); // Take the table offline - results = this.node.search(text); - this.content.appendChild(this.table); // Put the table online again - } - else { - results = []; - } - - return results; - }; - - /** - * Expand all nodes - */ - treemode.expandAll = function () { - if (this.node) { - this.content.removeChild(this.table); // Take the table offline - this.node.expand(); - this.content.appendChild(this.table); // Put the table online again - } - }; - - /** - * Collapse all nodes - */ - treemode.collapseAll = function () { - if (this.node) { - this.content.removeChild(this.table); // Take the table offline - this.node.collapse(); - this.content.appendChild(this.table); // Put the table online again - } - }; - - /** - * The method onChange is called whenever a field or value is changed, created, - * deleted, duplicated, etc. - * @param {String} action Change action. Available values: "editField", - * "editValue", "changeType", "appendNode", - * "removeNode", "duplicateNode", "moveNode", "expand", - * "collapse". - * @param {Object} params Object containing parameters describing the change. - * The parameters in params depend on the action (for - * example for "editValue" the Node, old value, and new - * value are provided). params contains all information - * needed to undo or redo the action. - * @private - */ - treemode._onAction = function (action, params) { - // add an action to the history - if (this.history) { - this.history.add(action, params); - } - - // trigger the onChange callback - if (this.options.change) { - try { - this.options.change(); - } - catch (err) { - util.log('Error in change callback: ', err); - } - } - }; - - /** - * Start autoscrolling when given mouse position is above the top of the - * editor contents, or below the bottom. - * @param {Number} mouseY Absolute mouse position in pixels - */ - treemode.startAutoScroll = function (mouseY) { - var me = this; - var content = this.content; - var top = util.getAbsoluteTop(content); - var height = content.clientHeight; - var bottom = top + height; - var margin = 24; - var interval = 50; // ms - - if ((mouseY < top + margin) && content.scrollTop > 0) { - this.autoScrollStep = ((top + margin) - mouseY) / 3; - } - else if (mouseY > bottom - margin && - height + content.scrollTop < content.scrollHeight) { - this.autoScrollStep = ((bottom - margin) - mouseY) / 3; - } - else { - this.autoScrollStep = undefined; - } - - if (this.autoScrollStep) { - if (!this.autoScrollTimer) { - this.autoScrollTimer = setInterval(function () { - if (me.autoScrollStep) { - content.scrollTop -= me.autoScrollStep; - } - else { - me.stopAutoScroll(); - } - }, interval); - } - } - else { - this.stopAutoScroll(); - } - }; - - /** - * Stop auto scrolling. Only applicable when scrolling - */ - treemode.stopAutoScroll = function () { - if (this.autoScrollTimer) { - clearTimeout(this.autoScrollTimer); - delete this.autoScrollTimer; - } - if (this.autoScrollStep) { - delete this.autoScrollStep; - } - }; - - - /** - * Set the focus to an element in the editor, set text selection, and - * set scroll position. - * @param {Object} selection An object containing fields: - * {Element | undefined} dom The dom element - * which has focus - * {Range | TextRange} range A text selection - * {Number} scrollTop Scroll position - */ - treemode.setSelection = function (selection) { - if (!selection) { - return; - } - - if ('scrollTop' in selection && this.content) { - // TODO: animated scroll - this.content.scrollTop = selection.scrollTop; - } - if (selection.range) { - util.setSelectionOffset(selection.range); - } - if (selection.dom) { - selection.dom.focus(); - } - }; - - /** - * Get the current focus - * @return {Object} selection An object containing fields: - * {Element | undefined} dom The dom element - * which has focus - * {Range | TextRange} range A text selection - * {Number} scrollTop Scroll position - */ - treemode.getSelection = function () { - return { - dom: domFocus, - scrollTop: this.content ? this.content.scrollTop : 0, - range: util.getSelectionOffset() - }; - }; - - /** - * Adjust the scroll position such that given top position is shown at 1/4 - * of the window height. - * @param {Number} top - * @param {function(boolean)} [callback] Callback, executed when animation is - * finished. The callback returns true - * when animation is finished, or false - * when not. - */ - treemode.scrollTo = function (top, callback) { - var content = this.content; - if (content) { - var editor = this; - // cancel any running animation - if (editor.animateTimeout) { - clearTimeout(editor.animateTimeout); - delete editor.animateTimeout; - } - if (editor.animateCallback) { - editor.animateCallback(false); - delete editor.animateCallback; - } - - // calculate final scroll position - var height = content.clientHeight; - var bottom = content.scrollHeight - height; - var finalScrollTop = Math.min(Math.max(top - height / 4, 0), bottom); - - // animate towards the new scroll position - var animate = function () { - var scrollTop = content.scrollTop; - var diff = (finalScrollTop - scrollTop); - if (Math.abs(diff) > 3) { - content.scrollTop += diff / 3; - editor.animateCallback = callback; - editor.animateTimeout = setTimeout(animate, 50); - } - else { - // finished - if (callback) { - callback(true); - } - content.scrollTop = finalScrollTop; - delete editor.animateTimeout; - delete editor.animateCallback; - } - }; - animate(); - } - else { - if (callback) { - callback(false); - } - } - }; - - /** - * Create main frame - * @private - */ - treemode._createFrame = function () { - // create the frame - this.frame = document.createElement('div'); - this.frame.className = 'jsoneditor'; - this.container.appendChild(this.frame); - - // create one global event listener to handle all events from all nodes - var editor = this; - function onEvent(event) { - editor._onEvent(event); - } - this.frame.onclick = function (event) { - var target = event.target;// || event.srcElement; - - onEvent(event); - - // prevent default submit action of buttons when editor is located - // inside a form - if (target.nodeName == 'BUTTON') { - event.preventDefault(); - } - }; - this.frame.oninput = onEvent; - this.frame.onchange = onEvent; - this.frame.onkeydown = onEvent; - this.frame.onkeyup = onEvent; - this.frame.oncut = onEvent; - this.frame.onpaste = onEvent; - this.frame.onmousedown = onEvent; - this.frame.onmouseup = onEvent; - this.frame.onmouseover = onEvent; - this.frame.onmouseout = onEvent; - // Note: focus and blur events do not propagate, therefore they defined - // using an eventListener with useCapture=true - // see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html - util.addEventListener(this.frame, 'focus', onEvent, true); - util.addEventListener(this.frame, 'blur', onEvent, true); - this.frame.onfocusin = onEvent; // for IE - this.frame.onfocusout = onEvent; // for IE - - // create menu - this.menu = document.createElement('div'); - this.menu.className = 'menu'; - this.frame.appendChild(this.menu); - - // create expand all button - var expandAll = document.createElement('button'); - expandAll.className = 'expand-all'; - expandAll.title = 'Expand all fields'; - expandAll.onclick = function () { - editor.expandAll(); - }; - this.menu.appendChild(expandAll); - - // create expand all button - var collapseAll = document.createElement('button'); - collapseAll.title = 'Collapse all fields'; - collapseAll.className = 'collapse-all'; - collapseAll.onclick = function () { - editor.collapseAll(); - }; - this.menu.appendChild(collapseAll); - - // create undo/redo buttons - if (this.history) { - // create undo button - var undo = document.createElement('button'); - undo.className = 'undo separator'; - undo.title = 'Undo last action (Ctrl+Z)'; - undo.onclick = function () { - editor._onUndo(); - }; - this.menu.appendChild(undo); - this.dom.undo = undo; - - // create redo button - var redo = document.createElement('button'); - redo.className = 'redo'; - redo.title = 'Redo (Ctrl+Shift+Z)'; - redo.onclick = function () { - editor._onRedo(); - }; - this.menu.appendChild(redo); - this.dom.redo = redo; - - // register handler for onchange of history - this.history.onChange = function () { - undo.disabled = !editor.history.canUndo(); - redo.disabled = !editor.history.canRedo(); - }; - this.history.onChange(); - } - - // create mode box - if (this.options && this.options.modes && this.options.modes.length) { - var modeBox = modeswitcher.create(this, this.options.modes, this.options.mode); - this.menu.appendChild(modeBox); - this.dom.modeBox = modeBox; - } - - // create search box - if (this.options.search) { - this.searchBox = new SearchBox(this, this.menu); - } - }; - - /** - * Perform an undo action - * @private - */ - treemode._onUndo = function () { - if (this.history) { - // undo last action - this.history.undo(); - - // trigger change callback - if (this.options.change) { - this.options.change(); - } - } - }; - - /** - * Perform a redo action - * @private - */ - treemode._onRedo = function () { - if (this.history) { - // redo last action - this.history.redo(); - - // trigger change callback - if (this.options.change) { - this.options.change(); - } - } - }; - - /** - * Event handler - * @param event - * @private - */ - treemode._onEvent = function (event) { - var target = event.target; - - if (event.type == 'keydown') { - this._onKeyDown(event); - } - - if (event.type == 'focus') { - domFocus = target; - } - - var node = Node.getNodeFromTarget(target); - if (node) { - node.onEvent(event); - } - }; - - /** - * Event handler for keydown. Handles shortcut keys - * @param {Event} event - * @private - */ - treemode._onKeyDown = function (event) { - var keynum = event.which || event.keyCode; - var ctrlKey = event.ctrlKey; - var shiftKey = event.shiftKey; - var handled = false; - - if (keynum == 9) { // Tab or Shift+Tab - setTimeout(function () { - // select all text when moving focus to an editable div - util.selectContentEditable(domFocus); - }, 0); - } - - if (this.searchBox) { - if (ctrlKey && keynum == 70) { // Ctrl+F - this.searchBox.dom.search.focus(); - this.searchBox.dom.search.select(); - handled = true; - } - else if (keynum == 114 || (ctrlKey && keynum == 71)) { // F3 or Ctrl+G - var focus = true; - if (!shiftKey) { - // select next search result (F3 or Ctrl+G) - this.searchBox.next(focus); - } - else { - // select previous search result (Shift+F3 or Ctrl+Shift+G) - this.searchBox.previous(focus); - } - - handled = true; - } - } - - if (this.history) { - if (ctrlKey && !shiftKey && keynum == 90) { // Ctrl+Z - // undo - this._onUndo(); - handled = true; - } - else if (ctrlKey && shiftKey && keynum == 90) { // Ctrl+Shift+Z - // redo - this._onRedo(); - handled = true; - } - } - - if (handled) { - event.preventDefault(); - event.stopPropagation(); - } - }; - - /** - * Create main table - * @private - */ - treemode._createTable = function () { - var contentOuter = document.createElement('div'); - contentOuter.className = 'outer'; - this.contentOuter = contentOuter; - - this.content = document.createElement('div'); - this.content.className = 'tree'; - contentOuter.appendChild(this.content); - - this.table = document.createElement('table'); - this.table.className = 'tree'; - this.content.appendChild(this.table); - - // create colgroup where the first two columns don't have a fixed - // width, and the edit columns do have a fixed width - var col; - this.colgroupContent = document.createElement('colgroup'); - if (this.options.mode === 'tree') { - col = document.createElement('col'); - col.width = "24px"; - this.colgroupContent.appendChild(col); - } - col = document.createElement('col'); - col.width = "24px"; - this.colgroupContent.appendChild(col); - col = document.createElement('col'); - this.colgroupContent.appendChild(col); - this.table.appendChild(this.colgroupContent); - - this.tbody = document.createElement('tbody'); - this.table.appendChild(this.tbody); - - this.frame.appendChild(contentOuter); - }; - - // define modes - return [ - { - mode: 'tree', - mixin: treemode, - data: 'json' - }, - { - mode: 'view', - mixin: treemode, - data: 'json' - }, - { - mode: 'form', - mixin: treemode, - data: 'json' - } - ]; - }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - - -/***/ }, -/* 2 */ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(8), __webpack_require__(3)], __WEBPACK_AMD_DEFINE_RESULT__ = function (modeswitcher, util) { - - // create a mixin with the functions for text mode - var textmode = {}; - - /** - * Create a text editor - * @param {Element} container - * @param {Object} [options] Object with options. available options: - * {String} mode Available values: - * "text" (default) - * or "code". - * {Number} indentation Number of indentation - * spaces. 2 by default. - * {function} change Callback method - * triggered on change - * @private - */ - textmode.create = function (container, options) { - // read options - options = options || {}; - this.options = options; - if (options.indentation) { - this.indentation = Number(options.indentation); - } - else { - this.indentation = 2; // number of spaces - } - this.mode = (options.mode == 'code') ? 'code' : 'text'; - if (this.mode == 'code') { - // verify whether Ace editor is available and supported - if (typeof ace === 'undefined') { - this.mode = 'text'; - util.log('WARNING: Cannot load code editor, Ace library not loaded. ' + - 'Falling back to plain text editor'); - } - } - - var me = this; - this.container = container; - this.dom = {}; - this.editor = undefined; // ace code editor - this.textarea = undefined; // plain text editor (fallback when Ace is not available) - - this.width = container.clientWidth; - this.height = container.clientHeight; - - this.frame = document.createElement('div'); - this.frame.className = 'jsoneditor'; - this.frame.onclick = function (event) { - // prevent default submit action when the editor is located inside a form - event.preventDefault(); - }; - - // create menu - this.menu = document.createElement('div'); - this.menu.className = 'menu'; - this.frame.appendChild(this.menu); - - // create format button - var buttonFormat = document.createElement('button'); - buttonFormat.className = 'format'; - buttonFormat.title = 'Format JSON data, with proper indentation and line feeds'; - this.menu.appendChild(buttonFormat); - buttonFormat.onclick = function () { - try { - me.format(); - } - catch (err) { - me._onError(err); - } - }; - - // create compact button - var buttonCompact = document.createElement('button'); - buttonCompact.className = 'compact'; - buttonCompact.title = 'Compact JSON data, remove all whitespaces'; - this.menu.appendChild(buttonCompact); - buttonCompact.onclick = function () { - try { - me.compact(); - } - catch (err) { - me._onError(err); - } - }; - - // create mode box - if (this.options && this.options.modes && this.options.modes.length) { - var modeBox = modeswitcher.create(this, this.options.modes, this.options.mode); - this.menu.appendChild(modeBox); - this.dom.modeBox = modeBox; - } - - this.content = document.createElement('div'); - this.content.className = 'outer'; - this.frame.appendChild(this.content); - - this.container.appendChild(this.frame); - - if (this.mode == 'code') { - this.editorDom = document.createElement('div'); - this.editorDom.style.height = '100%'; // TODO: move to css - this.editorDom.style.width = '100%'; // TODO: move to css - this.content.appendChild(this.editorDom); - - var editor = ace.edit(this.editorDom); - editor.setTheme('ace/theme/jsoneditor'); - editor.setShowPrintMargin(false); - editor.setFontSize(13); - editor.getSession().setMode('ace/mode/json'); - editor.getSession().setTabSize(2); - editor.getSession().setUseSoftTabs(true); - editor.getSession().setUseWrapMode(true); - this.editor = editor; - - var poweredBy = document.createElement('a'); - poweredBy.appendChild(document.createTextNode('powered by ace')); - poweredBy.href = 'http://ace.ajax.org'; - poweredBy.target = '_blank'; - poweredBy.className = 'poweredBy'; - poweredBy.onclick = function () { - // TODO: this anchor falls below the margin of the content, - // therefore the normal a.href does not work. We use a click event - // for now, but this should be fixed. - window.open(poweredBy.href, poweredBy.target); - }; - this.menu.appendChild(poweredBy); - - if (options.change) { - // register onchange event - editor.on('change', function () { - options.change(); - }); - } - } - else { - // load a plain text textarea - var textarea = document.createElement('textarea'); - textarea.className = 'text'; - textarea.spellcheck = false; - this.content.appendChild(textarea); - this.textarea = textarea; - - if (options.change) { - // register onchange event - if (this.textarea.oninput === null) { - this.textarea.oninput = function () { - options.change(); - } - } - else { - // oninput is undefined. For IE8- - this.textarea.onchange = function () { - options.change(); - } - } - } - } - }; - - /** - * Detach the editor from the DOM - * @private - */ - textmode._delete = function () { - if (this.frame && this.container && this.frame.parentNode == this.container) { - this.container.removeChild(this.frame); - } - }; - - /** - * Throw an error. If an error callback is configured in options.error, this - * callback will be invoked. Else, a regular error is thrown. - * @param {Error} err - * @private - */ - textmode._onError = function(err) { - // TODO: onError is deprecated since version 2.2.0. cleanup some day - if (typeof this.onError === 'function') { - util.log('WARNING: JSONEditor.onError is deprecated. ' + - 'Use options.error instead.'); - this.onError(err); - } - - if (this.options && typeof this.options.error === 'function') { - this.options.error(err); - } - else { - throw err; - } - }; - - /** - * Compact the code in the formatter - */ - textmode.compact = function () { - var json = util.parse(this.getText()); - this.setText(JSON.stringify(json)); - }; - - /** - * Format the code in the formatter - */ - textmode.format = function () { - var json = util.parse(this.getText()); - this.setText(JSON.stringify(json, null, this.indentation)); - }; - - /** - * Set focus to the formatter - */ - textmode.focus = function () { - if (this.textarea) { - this.textarea.focus(); - } - if (this.editor) { - this.editor.focus(); - } - }; - - /** - * Resize the formatter - */ - textmode.resize = function () { - if (this.editor) { - var force = false; - this.editor.resize(force); - } - }; - - /** - * Set json data in the formatter - * @param {Object} json - */ - textmode.set = function(json) { - this.setText(JSON.stringify(json, null, this.indentation)); - }; - - /** - * Get json data from the formatter - * @return {Object} json - */ - textmode.get = function() { - return util.parse(this.getText()); - }; - - /** - * Get the text contents of the editor - * @return {String} jsonText - */ - textmode.getText = function() { - if (this.textarea) { - return this.textarea.value; - } - if (this.editor) { - return this.editor.getValue(); - } - return ''; - }; - - /** - * Set the text contents of the editor - * @param {String} jsonText - */ - textmode.setText = function(jsonText) { - if (this.textarea) { - this.textarea.value = jsonText; - } - if (this.editor) { - this.editor.setValue(jsonText, -1); - } - }; - - // define modes - return [ - { - mode: 'text', - mixin: textmode, - data: 'text', - load: textmode.format - }, - { - mode: 'code', - mixin: textmode, - data: 'text', - load: textmode.format - } - ]; - }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - - -/***/ }, -/* 3 */ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = function () { - - // create namespace - var util = {}; - - /** - * Parse JSON using the parser built-in in the browser. - * On exception, the jsonString is validated and a detailed error is thrown. - * @param {String} jsonString - * @return {JSON} json - */ - util.parse = function parse(jsonString) { - try { - return JSON.parse(jsonString); - } - catch (err) { - // try to load as JavaScript instead of JSON (like "{a: 2}" instead of "{"a": 2}" - try { - return util.parseJS(jsonString); - } - catch(err2) { - // ok no luck loading as JavaScript - - // try to throw a more detailed error message using validate - util.validate(jsonString); - - // rethrow the original error - throw err; - } - } - }; - - /** - * Parse a string containing an object in JavaScript notation into a JSON. - * Throws an error when not successful. This function can for example parse - * a string like "{a: 2, 'b': {c: 'd'}". - * @param {string} jsString - * @returns {JSON} json - */ - util.parseJS = function (jsString) { - // escape all single and double quotes inside strings - var chars = []; - var inString = false; - var i = 0; - while(i < jsString.length) { - var c = jsString.charAt(i); - var isEscaped = jsString.charAt(i - 1) === '\\'; - - if ((c === '"' || c === '\'') && !isEscaped) { - if (c === inString) { - // end of string - inString = false; - } - else if (!inString) { - // start of string - inString = c; - } - else { - // add escape character - chars.push('\\'); - } - } - - chars.push(c); - i++; - } - var jsonString = chars.join(''); - - // replace unescaped single quotes with double quotes, - // and replace escaped single quotes with unescaped single quotes - // TODO: we could do this step immediately in the previous step - jsonString = jsonString.replace(/(.?)'/g, function ($0, $1) { - return ($1 == '\\') ? '\'' : $1 + '"'; - }); - - // enclose unquoted object keys with double quotes - jsonString = jsonString.replace(/([{,]\s*)([a-zA-Z_][a-zA-Z0-9_]*)(\s*:)/g, function ($0, $1, $2, $3) { - return $1 + '"' + $2 + '"' + $3; - }); - - return JSON.parse(jsonString); - }; - - /** - * Validate a string containing a JSON object - * This method uses JSONLint to validate the String. If JSONLint is not - * available, the built-in JSON parser of the browser is used. - * @param {String} jsonString String with an (invalid) JSON object - * @throws Error - */ - util.validate = function validate(jsonString) { - if (typeof(jsonlint) != 'undefined') { - jsonlint.parse(jsonString); - } - else { - JSON.parse(jsonString); - } - }; - - /** - * Extend object a with the properties of object b - * @param {Object} a - * @param {Object} b - * @return {Object} a - */ - util.extend = function extend(a, b) { - for (var prop in b) { - if (b.hasOwnProperty(prop)) { - a[prop] = b[prop]; - } - } - return a; - }; - - /** - * Remove all properties from object a - * @param {Object} a - * @return {Object} a - */ - util.clear = function clear (a) { - for (var prop in a) { - if (a.hasOwnProperty(prop)) { - delete a[prop]; - } - } - return a; - }; - - /** - * Output text to the console, if console is available - * @param {...*} args - */ - util.log = function log (args) { - if (typeof console !== 'undefined' && typeof console.log === 'function') { - console.log.apply(console, arguments); - } - }; - - /** - * Get the type of an object - * @param {*} object - * @return {String} type - */ - util.type = function type (object) { - if (object === null) { - return 'null'; - } - if (object === undefined) { - return 'undefined'; - } - if ((object instanceof Number) || (typeof object === 'number')) { - return 'number'; - } - if ((object instanceof String) || (typeof object === 'string')) { - return 'string'; - } - if ((object instanceof Boolean) || (typeof object === 'boolean')) { - return 'boolean'; - } - if ((object instanceof RegExp) || (typeof object === 'regexp')) { - return 'regexp'; - } - if (util.isArray(object)) { - return 'array'; - } - - return 'object'; - }; - - /** - * Test whether a text contains a url (matches when a string starts - * with 'http://*' or 'https://*' and has no whitespace characters) - * @param {String} text - */ - var isUrlRegex = /^https?:\/\/\S+$/; - util.isUrl = function isUrl (text) { - return (typeof text == 'string' || text instanceof String) && - isUrlRegex.test(text); - }; - - /** - * Tes whether given object is an Array - * @param {*} obj - * @returns {boolean} returns true when obj is an array - */ - util.isArray = function (obj) { - return Object.prototype.toString.call(obj) === '[object Array]'; - }; - - /** - * Retrieve the absolute left value of a DOM element - * @param {Element} elem A dom element, for example a div - * @return {Number} left The absolute left position of this element - * in the browser page. - */ - util.getAbsoluteLeft = function getAbsoluteLeft(elem) { - var rect = elem.getBoundingClientRect(); - return rect.left + window.pageXOffset || document.scrollLeft || 0; - }; - - /** - * Retrieve the absolute top value of a DOM element - * @param {Element} elem A dom element, for example a div - * @return {Number} top The absolute top position of this element - * in the browser page. - */ - util.getAbsoluteTop = function getAbsoluteTop(elem) { - var rect = elem.getBoundingClientRect(); - return rect.top + window.pageYOffset || document.scrollTop || 0; - }; - - /** - * add a className to the given elements style - * @param {Element} elem - * @param {String} className - */ - util.addClassName = function addClassName(elem, className) { - var classes = elem.className.split(' '); - if (classes.indexOf(className) == -1) { - classes.push(className); // add the class to the array - elem.className = classes.join(' '); - } - }; - - /** - * add a className to the given elements style - * @param {Element} elem - * @param {String} className - */ - util.removeClassName = function removeClassName(elem, className) { - var classes = elem.className.split(' '); - var index = classes.indexOf(className); - if (index != -1) { - classes.splice(index, 1); // remove the class from the array - elem.className = classes.join(' '); - } - }; - - /** - * Strip the formatting from the contents of a div - * the formatting from the div itself is not stripped, only from its childs. - * @param {Element} divElement - */ - util.stripFormatting = function stripFormatting(divElement) { - var childs = divElement.childNodes; - for (var i = 0, iMax = childs.length; i < iMax; i++) { - var child = childs[i]; - - // remove the style - if (child.style) { - // TODO: test if child.attributes does contain style - child.removeAttribute('style'); - } - - // remove all attributes - var attributes = child.attributes; - if (attributes) { - for (var j = attributes.length - 1; j >= 0; j--) { - var attribute = attributes[j]; - if (attribute.specified == true) { - child.removeAttribute(attribute.name); - } - } - } - - // recursively strip childs - util.stripFormatting(child); - } - }; - - /** - * Set focus to the end of an editable div - * code from Nico Burns - * http://stackoverflow.com/users/140293/nico-burns - * http://stackoverflow.com/questions/1125292/how-to-move-cursor-to-end-of-contenteditable-entity - * @param {Element} contentEditableElement A content editable div - */ - util.setEndOfContentEditable = function setEndOfContentEditable(contentEditableElement) { - var range, selection; - if(document.createRange) { - range = document.createRange();//Create a range (a range is a like the selection but invisible) - range.selectNodeContents(contentEditableElement);//Select the entire contents of the element with the range - range.collapse(false);//collapse the range to the end point. false means collapse to end rather than the start - selection = window.getSelection();//get the selection object (allows you to change selection) - selection.removeAllRanges();//remove any selections already made - selection.addRange(range);//make the range you have just created the visible selection - } - }; - - /** - * Select all text of a content editable div. - * http://stackoverflow.com/a/3806004/1262753 - * @param {Element} contentEditableElement A content editable div - */ - util.selectContentEditable = function selectContentEditable(contentEditableElement) { - if (!contentEditableElement || contentEditableElement.nodeName != 'DIV') { - return; - } - - var sel, range; - if (window.getSelection && document.createRange) { - range = document.createRange(); - range.selectNodeContents(contentEditableElement); - sel = window.getSelection(); - sel.removeAllRanges(); - sel.addRange(range); - } - }; - - /** - * Get text selection - * http://stackoverflow.com/questions/4687808/contenteditable-selected-text-save-and-restore - * @return {Range | TextRange | null} range - */ - util.getSelection = function getSelection() { - if (window.getSelection) { - var sel = window.getSelection(); - if (sel.getRangeAt && sel.rangeCount) { - return sel.getRangeAt(0); - } - } - return null; - }; - - /** - * Set text selection - * http://stackoverflow.com/questions/4687808/contenteditable-selected-text-save-and-restore - * @param {Range | TextRange | null} range - */ - util.setSelection = function setSelection(range) { - if (range) { - if (window.getSelection) { - var sel = window.getSelection(); - sel.removeAllRanges(); - sel.addRange(range); - } - } - }; - - /** - * Get selected text range - * @return {Object} params object containing parameters: - * {Number} startOffset - * {Number} endOffset - * {Element} container HTML element holding the - * selected text element - * Returns null if no text selection is found - */ - util.getSelectionOffset = function getSelectionOffset() { - var range = util.getSelection(); - - if (range && 'startOffset' in range && 'endOffset' in range && - range.startContainer && (range.startContainer == range.endContainer)) { - return { - startOffset: range.startOffset, - endOffset: range.endOffset, - container: range.startContainer.parentNode - }; - } - - return null; - }; - - /** - * Set selected text range in given element - * @param {Object} params An object containing: - * {Element} container - * {Number} startOffset - * {Number} endOffset - */ - util.setSelectionOffset = function setSelectionOffset(params) { - if (document.createRange && window.getSelection) { - var selection = window.getSelection(); - if(selection) { - var range = document.createRange(); - // TODO: do not suppose that the first child of the container is a textnode, - // but recursively find the textnodes - range.setStart(params.container.firstChild, params.startOffset); - range.setEnd(params.container.firstChild, params.endOffset); - - util.setSelection(range); - } - } - }; - - /** - * Get the inner text of an HTML element (for example a div element) - * @param {Element} element - * @param {Object} [buffer] - * @return {String} innerText - */ - util.getInnerText = function getInnerText(element, buffer) { - var first = (buffer == undefined); - if (first) { - buffer = { - 'text': '', - 'flush': function () { - var text = this.text; - this.text = ''; - return text; - }, - 'set': function (text) { - this.text = text; - } - }; - } - - // text node - if (element.nodeValue) { - return buffer.flush() + element.nodeValue; - } - - // divs or other HTML elements - if (element.hasChildNodes()) { - var childNodes = element.childNodes; - var innerText = ''; - - for (var i = 0, iMax = childNodes.length; i < iMax; i++) { - var child = childNodes[i]; - - if (child.nodeName == 'DIV' || child.nodeName == 'P') { - var prevChild = childNodes[i - 1]; - var prevName = prevChild ? prevChild.nodeName : undefined; - if (prevName && prevName != 'DIV' && prevName != 'P' && prevName != 'BR') { - innerText += '\n'; - buffer.flush(); - } - innerText += util.getInnerText(child, buffer); - buffer.set('\n'); - } - else if (child.nodeName == 'BR') { - innerText += buffer.flush(); - buffer.set('\n'); - } - else { - innerText += util.getInnerText(child, buffer); - } - } - - return innerText; - } - else { - if (element.nodeName == 'P' && util.getInternetExplorerVersion() != -1) { - // On Internet Explorer, a

    with hasChildNodes()==false is - // rendered with a new line. Note that a

    with - // hasChildNodes()==true is rendered without a new line - // Other browsers always ensure there is a
    inside the

    , - // and if not, the

    does not render a new line - return buffer.flush(); - } - } - - // br or unknown - return ''; - }; - - /** - * Returns the version of Internet Explorer or a -1 - * (indicating the use of another browser). - * Source: http://msdn.microsoft.com/en-us/library/ms537509(v=vs.85).aspx - * @return {Number} Internet Explorer version, or -1 in case of an other browser - */ - util.getInternetExplorerVersion = function getInternetExplorerVersion() { - if (_ieVersion == -1) { - var rv = -1; // Return value assumes failure. - if (navigator.appName == 'Microsoft Internet Explorer') - { - var ua = navigator.userAgent; - var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})"); - if (re.exec(ua) != null) { - rv = parseFloat( RegExp.$1 ); - } - } - - _ieVersion = rv; - } - - return _ieVersion; - }; - - /** - * Test whether the current browser is Firefox - * @returns {boolean} isFirefox - */ - util.isFirefox = function isFirefox () { - return (navigator.userAgent.indexOf("Firefox") != -1); - }; - - /** - * cached internet explorer version - * @type {Number} - * @private - */ - var _ieVersion = -1; - - /** - * Add and event listener. Works for all browsers - * @param {Element} element An html element - * @param {string} action The action, for example "click", - * without the prefix "on" - * @param {function} listener The callback function to be executed - * @param {boolean} [useCapture] false by default - * @return {function} the created event listener - */ - util.addEventListener = function addEventListener(element, action, listener, useCapture) { - if (element.addEventListener) { - if (useCapture === undefined) - useCapture = false; - - if (action === "mousewheel" && util.isFirefox()) { - action = "DOMMouseScroll"; // For Firefox - } - - element.addEventListener(action, listener, useCapture); - return listener; - } else if (element.attachEvent) { - // Old IE browsers - var f = function () { - return listener.call(element, window.event); - }; - element.attachEvent("on" + action, f); - return f; - } - }; - - /** - * Remove an event listener from an element - * @param {Element} element An html dom element - * @param {string} action The name of the event, for example "mousedown" - * @param {function} listener The listener function - * @param {boolean} [useCapture] false by default - */ - util.removeEventListener = function removeEventListener(element, action, listener, useCapture) { - if (element.removeEventListener) { - if (useCapture === undefined) - useCapture = false; - - if (action === "mousewheel" && util.isFirefox()) { - action = "DOMMouseScroll"; // For Firefox - } - - element.removeEventListener(action, listener, useCapture); - } else if (element.detachEvent) { - // Old IE browsers - element.detachEvent("on" + action, listener); - } - }; - - return util; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - -/***/ }, -/* 4 */ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = function () { - - /** - * The highlighter can highlight/unhighlight a node, and - * animate the visibility of a context menu. - * @constructor Highlighter - */ - function Highlighter () { - this.locked = false; - } - - /** - * Hightlight given node and its childs - * @param {Node} node - */ - Highlighter.prototype.highlight = function (node) { - if (this.locked) { - return; - } - - if (this.node != node) { - // unhighlight current node - if (this.node) { - this.node.setHighlight(false); - } - - // highlight new node - this.node = node; - this.node.setHighlight(true); - } - - // cancel any current timeout - this._cancelUnhighlight(); - }; - - /** - * Unhighlight currently highlighted node. - * Will be done after a delay - */ - Highlighter.prototype.unhighlight = function () { - if (this.locked) { - return; - } - - var me = this; - if (this.node) { - this._cancelUnhighlight(); - - // do the unhighlighting after a small delay, to prevent re-highlighting - // the same node when moving from the drag-icon to the contextmenu-icon - // or vice versa. - this.unhighlightTimer = setTimeout(function () { - me.node.setHighlight(false); - me.node = undefined; - me.unhighlightTimer = undefined; - }, 0); - } - }; - - /** - * Cancel an unhighlight action (if before the timeout of the unhighlight action) - * @private - */ - Highlighter.prototype._cancelUnhighlight = function () { - if (this.unhighlightTimer) { - clearTimeout(this.unhighlightTimer); - this.unhighlightTimer = undefined; - } - }; - - /** - * Lock highlighting or unhighlighting nodes. - * methods highlight and unhighlight do not work while locked. - */ - Highlighter.prototype.lock = function () { - this.locked = true; - }; - - /** - * Unlock highlighting or unhighlighting nodes - */ - Highlighter.prototype.unlock = function () { - this.locked = false; - }; - - return Highlighter; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - -/***/ }, -/* 5 */ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(3)], __WEBPACK_AMD_DEFINE_RESULT__ = function (util) { - - /** - * @constructor History - * Store action history, enables undo and redo - * @param {JSONEditor} editor - */ - function History (editor) { - this.editor = editor; - this.clear(); - - // map with all supported actions - this.actions = { - 'editField': { - 'undo': function (params) { - params.node.updateField(params.oldValue); - }, - 'redo': function (params) { - params.node.updateField(params.newValue); - } - }, - 'editValue': { - 'undo': function (params) { - params.node.updateValue(params.oldValue); - }, - 'redo': function (params) { - params.node.updateValue(params.newValue); - } - }, - 'appendNode': { - 'undo': function (params) { - params.parent.removeChild(params.node); - }, - 'redo': function (params) { - params.parent.appendChild(params.node); - } - }, - 'insertBeforeNode': { - 'undo': function (params) { - params.parent.removeChild(params.node); - }, - 'redo': function (params) { - params.parent.insertBefore(params.node, params.beforeNode); - } - }, - 'insertAfterNode': { - 'undo': function (params) { - params.parent.removeChild(params.node); - }, - 'redo': function (params) { - params.parent.insertAfter(params.node, params.afterNode); - } - }, - 'removeNode': { - 'undo': function (params) { - var parent = params.parent; - var beforeNode = parent.childs[params.index] || parent.append; - parent.insertBefore(params.node, beforeNode); - }, - 'redo': function (params) { - params.parent.removeChild(params.node); - } - }, - 'duplicateNode': { - 'undo': function (params) { - params.parent.removeChild(params.clone); - }, - 'redo': function (params) { - params.parent.insertAfter(params.clone, params.node); - } - }, - 'changeType': { - 'undo': function (params) { - params.node.changeType(params.oldType); - }, - 'redo': function (params) { - params.node.changeType(params.newType); - } - }, - 'moveNode': { - 'undo': function (params) { - params.startParent.moveTo(params.node, params.startIndex); - }, - 'redo': function (params) { - params.endParent.moveTo(params.node, params.endIndex); - } - }, - 'sort': { - 'undo': function (params) { - var node = params.node; - node.hideChilds(); - node.sort = params.oldSort; - node.childs = params.oldChilds; - node.showChilds(); - }, - 'redo': function (params) { - var node = params.node; - node.hideChilds(); - node.sort = params.newSort; - node.childs = params.newChilds; - node.showChilds(); - } - } - - // TODO: restore the original caret position and selection with each undo - // TODO: implement history for actions "expand", "collapse", "scroll", "setDocument" - }; - } - - /** - * The method onChange is executed when the History is changed, and can - * be overloaded. - */ - History.prototype.onChange = function () {}; - - /** - * Add a new action to the history - * @param {String} action The executed action. Available actions: "editField", - * "editValue", "changeType", "appendNode", - * "removeNode", "duplicateNode", "moveNode" - * @param {Object} params Object containing parameters describing the change. - * The parameters in params depend on the action (for - * example for "editValue" the Node, old value, and new - * value are provided). params contains all information - * needed to undo or redo the action. - */ - History.prototype.add = function (action, params) { - this.index++; - this.history[this.index] = { - 'action': action, - 'params': params, - 'timestamp': new Date() - }; - - // remove redo actions which are invalid now - if (this.index < this.history.length - 1) { - this.history.splice(this.index + 1, this.history.length - this.index - 1); - } - - // fire onchange event - this.onChange(); - }; - - /** - * Clear history - */ - History.prototype.clear = function () { - this.history = []; - this.index = -1; - - // fire onchange event - this.onChange(); - }; - - /** - * Check if there is an action available for undo - * @return {Boolean} canUndo - */ - History.prototype.canUndo = function () { - return (this.index >= 0); - }; - - /** - * Check if there is an action available for redo - * @return {Boolean} canRedo - */ - History.prototype.canRedo = function () { - return (this.index < this.history.length - 1); - }; - - /** - * Undo the last action - */ - History.prototype.undo = function () { - if (this.canUndo()) { - var obj = this.history[this.index]; - if (obj) { - var action = this.actions[obj.action]; - if (action && action.undo) { - action.undo(obj.params); - if (obj.params.oldSelection) { - this.editor.setSelection(obj.params.oldSelection); - } - } - else { - util.log('Error: unknown action "' + obj.action + '"'); - } - } - this.index--; - - // fire onchange event - this.onChange(); - } - }; - - /** - * Redo the last action - */ - History.prototype.redo = function () { - if (this.canRedo()) { - this.index++; - - var obj = this.history[this.index]; - if (obj) { - var action = this.actions[obj.action]; - if (action && action.redo) { - action.redo(obj.params); - if (obj.params.newSelection) { - this.editor.setSelection(obj.params.newSelection); - } - } - else { - util.log('Error: unknown action "' + obj.action + '"'); - } - } - - // fire onchange event - this.onChange(); - } - }; - - return History; - }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - - -/***/ }, -/* 6 */ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = function () { - - /** - * @constructor SearchBox - * Create a search box in given HTML container - * @param {JSONEditor} editor The JSON Editor to attach to - * @param {Element} container HTML container element of where to - * create the search box - */ - function SearchBox (editor, container) { - var searchBox = this; - - this.editor = editor; - this.timeout = undefined; - this.delay = 200; // ms - this.lastText = undefined; - - this.dom = {}; - this.dom.container = container; - - var table = document.createElement('table'); - this.dom.table = table; - table.className = 'search'; - container.appendChild(table); - var tbody = document.createElement('tbody'); - this.dom.tbody = tbody; - table.appendChild(tbody); - var tr = document.createElement('tr'); - tbody.appendChild(tr); - - var td = document.createElement('td'); - tr.appendChild(td); - var results = document.createElement('div'); - this.dom.results = results; - results.className = 'results'; - td.appendChild(results); - - td = document.createElement('td'); - tr.appendChild(td); - var divInput = document.createElement('div'); - this.dom.input = divInput; - divInput.className = 'frame'; - divInput.title = 'Search fields and values'; - td.appendChild(divInput); - - // table to contain the text input and search button - var tableInput = document.createElement('table'); - divInput.appendChild(tableInput); - var tbodySearch = document.createElement('tbody'); - tableInput.appendChild(tbodySearch); - tr = document.createElement('tr'); - tbodySearch.appendChild(tr); - - var refreshSearch = document.createElement('button'); - refreshSearch.className = 'refresh'; - td = document.createElement('td'); - td.appendChild(refreshSearch); - tr.appendChild(td); - - var search = document.createElement('input'); - this.dom.search = search; - search.oninput = function (event) { - searchBox._onDelayedSearch(event); - }; - search.onchange = function (event) { // For IE 9 - searchBox._onSearch(event); - }; - search.onkeydown = function (event) { - searchBox._onKeyDown(event); - }; - search.onkeyup = function (event) { - searchBox._onKeyUp(event); - }; - refreshSearch.onclick = function (event) { - search.select(); - }; - - // TODO: ESC in FF restores the last input, is a FF bug, https://bugzilla.mozilla.org/show_bug.cgi?id=598819 - td = document.createElement('td'); - td.appendChild(search); - tr.appendChild(td); - - var searchNext = document.createElement('button'); - searchNext.title = 'Next result (Enter)'; - searchNext.className = 'next'; - searchNext.onclick = function () { - searchBox.next(); - }; - td = document.createElement('td'); - td.appendChild(searchNext); - tr.appendChild(td); - - var searchPrevious = document.createElement('button'); - searchPrevious.title = 'Previous result (Shift+Enter)'; - searchPrevious.className = 'previous'; - searchPrevious.onclick = function () { - searchBox.previous(); - }; - td = document.createElement('td'); - td.appendChild(searchPrevious); - tr.appendChild(td); - } - - /** - * Go to the next search result - * @param {boolean} [focus] If true, focus will be set to the next result - * focus is false by default. - */ - SearchBox.prototype.next = function(focus) { - if (this.results != undefined) { - var index = (this.resultIndex != undefined) ? this.resultIndex + 1 : 0; - if (index > this.results.length - 1) { - index = 0; - } - this._setActiveResult(index, focus); - } - }; - - /** - * Go to the prevous search result - * @param {boolean} [focus] If true, focus will be set to the next result - * focus is false by default. - */ - SearchBox.prototype.previous = function(focus) { - if (this.results != undefined) { - var max = this.results.length - 1; - var index = (this.resultIndex != undefined) ? this.resultIndex - 1 : max; - if (index < 0) { - index = max; - } - this._setActiveResult(index, focus); - } - }; - - /** - * Set new value for the current active result - * @param {Number} index - * @param {boolean} [focus] If true, focus will be set to the next result. - * focus is false by default. - * @private - */ - SearchBox.prototype._setActiveResult = function(index, focus) { - // de-activate current active result - if (this.activeResult) { - var prevNode = this.activeResult.node; - var prevElem = this.activeResult.elem; - if (prevElem == 'field') { - delete prevNode.searchFieldActive; - } - else { - delete prevNode.searchValueActive; - } - prevNode.updateDom(); - } - - if (!this.results || !this.results[index]) { - // out of range, set to undefined - this.resultIndex = undefined; - this.activeResult = undefined; - return; - } - - this.resultIndex = index; - - // set new node active - var node = this.results[this.resultIndex].node; - var elem = this.results[this.resultIndex].elem; - if (elem == 'field') { - node.searchFieldActive = true; - } - else { - node.searchValueActive = true; - } - this.activeResult = this.results[this.resultIndex]; - node.updateDom(); - - // TODO: not so nice that the focus is only set after the animation is finished - node.scrollTo(function () { - if (focus) { - node.focus(elem); - } - }); - }; - - /** - * Cancel any running onDelayedSearch. - * @private - */ - SearchBox.prototype._clearDelay = function() { - if (this.timeout != undefined) { - clearTimeout(this.timeout); - delete this.timeout; - } - }; - - /** - * Start a timer to execute a search after a short delay. - * Used for reducing the number of searches while typing. - * @param {Event} event - * @private - */ - SearchBox.prototype._onDelayedSearch = function (event) { - // execute the search after a short delay (reduces the number of - // search actions while typing in the search text box) - this._clearDelay(); - var searchBox = this; - this.timeout = setTimeout(function (event) { - searchBox._onSearch(event); - }, - this.delay); - }; - - /** - * Handle onSearch event - * @param {Event} event - * @param {boolean} [forceSearch] If true, search will be executed again even - * when the search text is not changed. - * Default is false. - * @private - */ - SearchBox.prototype._onSearch = function (event, forceSearch) { - this._clearDelay(); - - var value = this.dom.search.value; - var text = (value.length > 0) ? value : undefined; - if (text != this.lastText || forceSearch) { - // only search again when changed - this.lastText = text; - this.results = this.editor.search(text); - this._setActiveResult(undefined); - - // display search results - if (text != undefined) { - var resultCount = this.results.length; - switch (resultCount) { - case 0: this.dom.results.innerHTML = 'no results'; break; - case 1: this.dom.results.innerHTML = '1 result'; break; - default: this.dom.results.innerHTML = resultCount + ' results'; break; - } - } - else { - this.dom.results.innerHTML = ''; - } - } - }; - - /** - * Handle onKeyDown event in the input box - * @param {Event} event - * @private - */ - SearchBox.prototype._onKeyDown = function (event) { - var keynum = event.which; - if (keynum == 27) { // ESC - this.dom.search.value = ''; // clear search - this._onSearch(event); - event.preventDefault(); - event.stopPropagation(); - } - else if (keynum == 13) { // Enter - if (event.ctrlKey) { - // force to search again - this._onSearch(event, true); - } - else if (event.shiftKey) { - // move to the previous search result - this.previous(); - } - else { - // move to the next search result - this.next(); - } - event.preventDefault(); - event.stopPropagation(); - } - }; - - /** - * Handle onKeyUp event in the input box - * @param {Event} event - * @private - */ - SearchBox.prototype._onKeyUp = function (event) { - var keynum = event.keyCode; - if (keynum != 27 && keynum != 13) { // !show and !Enter - this._onDelayedSearch(event); // For IE 9 - } - }; - - return SearchBox; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - - - - -/***/ }, -/* 7 */ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(9), __webpack_require__(10), __webpack_require__(3)], __WEBPACK_AMD_DEFINE_RESULT__ = function (ContextMenu, appendNodeFactory, util) { - - /** - * @constructor Node - * Create a new Node - * @param {TreeEditor} editor - * @param {Object} [params] Can contain parameters: - * {string} field - * {boolean} fieldEditable - * {*} value - * {String} type Can have values 'auto', 'array', - * 'object', or 'string'. - */ - function Node (editor, params) { - /** @type {TreeEditor} */ - this.editor = editor; - this.dom = {}; - this.expanded = false; - - if(params && (params instanceof Object)) { - this.setField(params.field, params.fieldEditable); - this.setValue(params.value, params.type); - } - else { - this.setField(''); - this.setValue(null); - } - } - - /** - * Determine whether the field and/or value of this node are editable - * @private - */ - Node.prototype._updateEditability = function () { - this.editable = { - field: true, - value: true - }; - - if (this.editor) { - this.editable.field = this.editor.options.mode === 'tree'; - this.editable.value = this.editor.options.mode !== 'view'; - - if (this.editor.options.mode === 'tree' && (typeof this.editor.options.editable === 'function')) { - var editable = this.editor.options.editable({ - field: this.field, - value: this.value, - path: this.path() - }); - - if (typeof editable === 'boolean') { - this.editable.field = editable; - this.editable.value = editable; - } - else { - if (typeof editable.field === 'boolean') this.editable.field = editable.field; - if (typeof editable.value === 'boolean') this.editable.value = editable.value; - } - } - } - }; - - /** - * Get the path of this node - * @return {String[]} Array containing the path to this node - */ - Node.prototype.path = function () { - var node = this; - var path = []; - while (node) { - var field = node.field || node.index; - if (field !== undefined) { - path.unshift(field); - } - node = node.parent; - } - return path; - }; - - /** - * Set parent node - * @param {Node} parent - */ - Node.prototype.setParent = function(parent) { - this.parent = parent; - }; - - /** - * Set field - * @param {String} field - * @param {boolean} [fieldEditable] - */ - Node.prototype.setField = function(field, fieldEditable) { - this.field = field; - this.fieldEditable = (fieldEditable == true); - }; - - /** - * Get field - * @return {String} - */ - Node.prototype.getField = function() { - if (this.field === undefined) { - this._getDomField(); - } - - return this.field; - }; - - /** - * Set value. Value is a JSON structure or an element String, Boolean, etc. - * @param {*} value - * @param {String} [type] Specify the type of the value. Can be 'auto', - * 'array', 'object', or 'string' - */ - Node.prototype.setValue = function(value, type) { - var childValue, child; - - // first clear all current childs (if any) - var childs = this.childs; - if (childs) { - while (childs.length) { - this.removeChild(childs[0]); - } - } - - // TODO: remove the DOM of this Node - - this.type = this._getType(value); - - // check if type corresponds with the provided type - if (type && type != this.type) { - if (type == 'string' && this.type == 'auto') { - this.type = type; - } - else { - throw new Error('Type mismatch: ' + - 'cannot cast value of type "' + this.type + - ' to the specified type "' + type + '"'); - } - } - - if (this.type == 'array') { - // array - this.childs = []; - for (var i = 0, iMax = value.length; i < iMax; i++) { - childValue = value[i]; - if (childValue !== undefined && !(childValue instanceof Function)) { - // ignore undefined and functions - child = new Node(this.editor, { - value: childValue - }); - this.appendChild(child); - } - } - this.value = ''; - } - else if (this.type == 'object') { - // object - this.childs = []; - for (var childField in value) { - if (value.hasOwnProperty(childField)) { - childValue = value[childField]; - if (childValue !== undefined && !(childValue instanceof Function)) { - // ignore undefined and functions - child = new Node(this.editor, { - field: childField, - value: childValue - }); - this.appendChild(child); - } - } - } - this.value = ''; - } - else { - // value - this.childs = undefined; - this.value = value; - /* TODO - if (typeof(value) == 'string') { - var escValue = JSON.stringify(value); - this.value = escValue.substring(1, escValue.length - 1); - util.log('check', value, this.value); - } - else { - this.value = value; - } - */ - } - }; - - /** - * Get value. Value is a JSON structure - * @return {*} value - */ - Node.prototype.getValue = function() { - //var childs, i, iMax; - - if (this.type == 'array') { - var arr = []; - this.childs.forEach (function (child) { - arr.push(child.getValue()); - }); - return arr; - } - else if (this.type == 'object') { - var obj = {}; - this.childs.forEach (function (child) { - obj[child.getField()] = child.getValue(); - }); - return obj; - } - else { - if (this.value === undefined) { - this._getDomValue(); - } - - return this.value; - } - }; - - /** - * Get the nesting level of this node - * @return {Number} level - */ - Node.prototype.getLevel = function() { - return (this.parent ? this.parent.getLevel() + 1 : 0); - }; - - /** - * Create a clone of a node - * The complete state of a clone is copied, including whether it is expanded or - * not. The DOM elements are not cloned. - * @return {Node} clone - */ - Node.prototype.clone = function() { - var clone = new Node(this.editor); - clone.type = this.type; - clone.field = this.field; - clone.fieldInnerText = this.fieldInnerText; - clone.fieldEditable = this.fieldEditable; - clone.value = this.value; - clone.valueInnerText = this.valueInnerText; - clone.expanded = this.expanded; - - if (this.childs) { - // an object or array - var cloneChilds = []; - this.childs.forEach(function (child) { - var childClone = child.clone(); - childClone.setParent(clone); - cloneChilds.push(childClone); - }); - clone.childs = cloneChilds; - } - else { - // a value - clone.childs = undefined; - } - - return clone; - }; - - /** - * Expand this node and optionally its childs. - * @param {boolean} [recurse] Optional recursion, true by default. When - * true, all childs will be expanded recursively - */ - Node.prototype.expand = function(recurse) { - if (!this.childs) { - return; - } - - // set this node expanded - this.expanded = true; - if (this.dom.expand) { - this.dom.expand.className = 'expanded'; - } - - this.showChilds(); - - if (recurse != false) { - this.childs.forEach(function (child) { - child.expand(recurse); - }); - } - }; - - /** - * Collapse this node and optionally its childs. - * @param {boolean} [recurse] Optional recursion, true by default. When - * true, all childs will be collapsed recursively - */ - Node.prototype.collapse = function(recurse) { - if (!this.childs) { - return; - } - - this.hideChilds(); - - // collapse childs in case of recurse - if (recurse != false) { - this.childs.forEach(function (child) { - child.collapse(recurse); - }); - - } - - // make this node collapsed - if (this.dom.expand) { - this.dom.expand.className = 'collapsed'; - } - this.expanded = false; - }; - - /** - * Recursively show all childs when they are expanded - */ - Node.prototype.showChilds = function() { - var childs = this.childs; - if (!childs) { - return; - } - if (!this.expanded) { - return; - } - - var tr = this.dom.tr; - var table = tr ? tr.parentNode : undefined; - if (table) { - // show row with append button - var append = this.getAppend(); - var nextTr = tr.nextSibling; - if (nextTr) { - table.insertBefore(append, nextTr); - } - else { - table.appendChild(append); - } - - // show childs - this.childs.forEach(function (child) { - table.insertBefore(child.getDom(), append); - child.showChilds(); - }); - } - }; - - /** - * Hide the node with all its childs - */ - Node.prototype.hide = function() { - var tr = this.dom.tr; - var table = tr ? tr.parentNode : undefined; - if (table) { - table.removeChild(tr); - } - this.hideChilds(); - }; - - - /** - * Recursively hide all childs - */ - Node.prototype.hideChilds = function() { - var childs = this.childs; - if (!childs) { - return; - } - if (!this.expanded) { - return; - } - - // hide append row - var append = this.getAppend(); - if (append.parentNode) { - append.parentNode.removeChild(append); - } - - // hide childs - this.childs.forEach(function (child) { - child.hide(); - }); - }; - - - /** - * Add a new child to the node. - * Only applicable when Node value is of type array or object - * @param {Node} node - */ - Node.prototype.appendChild = function(node) { - if (this._hasChilds()) { - // adjust the link to the parent - node.setParent(this); - node.fieldEditable = (this.type == 'object'); - if (this.type == 'array') { - node.index = this.childs.length; - } - this.childs.push(node); - - if (this.expanded) { - // insert into the DOM, before the appendRow - var newTr = node.getDom(); - var appendTr = this.getAppend(); - var table = appendTr ? appendTr.parentNode : undefined; - if (appendTr && table) { - table.insertBefore(newTr, appendTr); - } - - node.showChilds(); - } - - this.updateDom({'updateIndexes': true}); - node.updateDom({'recurse': true}); - } - }; - - - /** - * Move a node from its current parent to this node - * Only applicable when Node value is of type array or object - * @param {Node} node - * @param {Node} beforeNode - */ - Node.prototype.moveBefore = function(node, beforeNode) { - if (this._hasChilds()) { - // create a temporary row, to prevent the scroll position from jumping - // when removing the node - var tbody = (this.dom.tr) ? this.dom.tr.parentNode : undefined; - if (tbody) { - var trTemp = document.createElement('tr'); - trTemp.style.height = tbody.clientHeight + 'px'; - tbody.appendChild(trTemp); - } - - if (node.parent) { - node.parent.removeChild(node); - } - - if (beforeNode instanceof AppendNode) { - this.appendChild(node); - } - else { - this.insertBefore(node, beforeNode); - } - - if (tbody) { - tbody.removeChild(trTemp); - } - } - }; - - /** - * Move a node from its current parent to this node - * Only applicable when Node value is of type array or object. - * If index is out of range, the node will be appended to the end - * @param {Node} node - * @param {Number} index - */ - Node.prototype.moveTo = function (node, index) { - if (node.parent == this) { - // same parent - var currentIndex = this.childs.indexOf(node); - if (currentIndex < index) { - // compensate the index for removal of the node itself - index++; - } - } - - var beforeNode = this.childs[index] || this.append; - this.moveBefore(node, beforeNode); - }; - - /** - * Insert a new child before a given node - * Only applicable when Node value is of type array or object - * @param {Node} node - * @param {Node} beforeNode - */ - Node.prototype.insertBefore = function(node, beforeNode) { - if (this._hasChilds()) { - if (beforeNode == this.append) { - // append to the child nodes - - // adjust the link to the parent - node.setParent(this); - node.fieldEditable = (this.type == 'object'); - this.childs.push(node); - } - else { - // insert before a child node - var index = this.childs.indexOf(beforeNode); - if (index == -1) { - throw new Error('Node not found'); - } - - // adjust the link to the parent - node.setParent(this); - node.fieldEditable = (this.type == 'object'); - this.childs.splice(index, 0, node); - } - - if (this.expanded) { - // insert into the DOM - var newTr = node.getDom(); - var nextTr = beforeNode.getDom(); - var table = nextTr ? nextTr.parentNode : undefined; - if (nextTr && table) { - table.insertBefore(newTr, nextTr); - } - - node.showChilds(); - } - - this.updateDom({'updateIndexes': true}); - node.updateDom({'recurse': true}); - } - }; - - /** - * Insert a new child before a given node - * Only applicable when Node value is of type array or object - * @param {Node} node - * @param {Node} afterNode - */ - Node.prototype.insertAfter = function(node, afterNode) { - if (this._hasChilds()) { - var index = this.childs.indexOf(afterNode); - var beforeNode = this.childs[index + 1]; - if (beforeNode) { - this.insertBefore(node, beforeNode); - } - else { - this.appendChild(node); - } - } - }; - - /** - * Search in this node - * The node will be expanded when the text is found one of its childs, else - * it will be collapsed. Searches are case insensitive. - * @param {String} text - * @return {Node[]} results Array with nodes containing the search text - */ - Node.prototype.search = function(text) { - var results = []; - var index; - var search = text ? text.toLowerCase() : undefined; - - // delete old search data - delete this.searchField; - delete this.searchValue; - - // search in field - if (this.field != undefined) { - var field = String(this.field).toLowerCase(); - index = field.indexOf(search); - if (index != -1) { - this.searchField = true; - results.push({ - 'node': this, - 'elem': 'field' - }); - } - - // update dom - this._updateDomField(); - } - - // search in value - if (this._hasChilds()) { - // array, object - - // search the nodes childs - if (this.childs) { - var childResults = []; - this.childs.forEach(function (child) { - childResults = childResults.concat(child.search(text)); - }); - results = results.concat(childResults); - } - - // update dom - if (search != undefined) { - var recurse = false; - if (childResults.length == 0) { - this.collapse(recurse); - } - else { - this.expand(recurse); - } - } - } - else { - // string, auto - if (this.value != undefined ) { - var value = String(this.value).toLowerCase(); - index = value.indexOf(search); - if (index != -1) { - this.searchValue = true; - results.push({ - 'node': this, - 'elem': 'value' - }); - } - } - - // update dom - this._updateDomValue(); - } - - return results; - }; - - /** - * Move the scroll position such that this node is in the visible area. - * The node will not get the focus - * @param {function(boolean)} [callback] - */ - Node.prototype.scrollTo = function(callback) { - if (!this.dom.tr || !this.dom.tr.parentNode) { - // if the node is not visible, expand its parents - var parent = this.parent; - var recurse = false; - while (parent) { - parent.expand(recurse); - parent = parent.parent; - } - } - - if (this.dom.tr && this.dom.tr.parentNode) { - this.editor.scrollTo(this.dom.tr.offsetTop, callback); - } - }; - - - // stores the element name currently having the focus - Node.focusElement = undefined; - - /** - * Set focus to this node - * @param {String} [elementName] The field name of the element to get the - * focus available values: 'drag', 'menu', - * 'expand', 'field', 'value' (default) - */ - Node.prototype.focus = function(elementName) { - Node.focusElement = elementName; - - if (this.dom.tr && this.dom.tr.parentNode) { - var dom = this.dom; - - switch (elementName) { - case 'drag': - if (dom.drag) { - dom.drag.focus(); - } - else { - dom.menu.focus(); - } - break; - - case 'menu': - dom.menu.focus(); - break; - - case 'expand': - if (this._hasChilds()) { - dom.expand.focus(); - } - else if (dom.field && this.fieldEditable) { - dom.field.focus(); - util.selectContentEditable(dom.field); - } - else if (dom.value && !this._hasChilds()) { - dom.value.focus(); - util.selectContentEditable(dom.value); - } - else { - dom.menu.focus(); - } - break; - - case 'field': - if (dom.field && this.fieldEditable) { - dom.field.focus(); - util.selectContentEditable(dom.field); - } - else if (dom.value && !this._hasChilds()) { - dom.value.focus(); - util.selectContentEditable(dom.value); - } - else if (this._hasChilds()) { - dom.expand.focus(); - } - else { - dom.menu.focus(); - } - break; - - case 'value': - default: - if (dom.value && !this._hasChilds()) { - dom.value.focus(); - util.selectContentEditable(dom.value); - } - else if (dom.field && this.fieldEditable) { - dom.field.focus(); - util.selectContentEditable(dom.field); - } - else if (this._hasChilds()) { - dom.expand.focus(); - } - else { - dom.menu.focus(); - } - break; - } - } - }; - - /** - * Select all text in an editable div after a delay of 0 ms - * @param {Element} editableDiv - */ - Node.select = function(editableDiv) { - setTimeout(function () { - util.selectContentEditable(editableDiv); - }, 0); - }; - - /** - * Update the values from the DOM field and value of this node - */ - Node.prototype.blur = function() { - // retrieve the actual field and value from the DOM. - this._getDomValue(false); - this._getDomField(false); - }; - - /** - * Duplicate given child node - * new structure will be added right before the cloned node - * @param {Node} node the childNode to be duplicated - * @return {Node} clone the clone of the node - * @private - */ - Node.prototype._duplicate = function(node) { - var clone = node.clone(); - - /* TODO: adjust the field name (to prevent equal field names) - if (this.type == 'object') { - } - */ - - this.insertAfter(clone, node); - - return clone; - }; - - /** - * Check if given node is a child. The method will check recursively to find - * this node. - * @param {Node} node - * @return {boolean} containsNode - */ - Node.prototype.containsNode = function(node) { - if (this == node) { - return true; - } - - var childs = this.childs; - if (childs) { - // TODO: use the js5 Array.some() here? - for (var i = 0, iMax = childs.length; i < iMax; i++) { - if (childs[i].containsNode(node)) { - return true; - } - } - } - - return false; - }; - - /** - * Move given node into this node - * @param {Node} node the childNode to be moved - * @param {Node} beforeNode node will be inserted before given - * node. If no beforeNode is given, - * the node is appended at the end - * @private - */ - Node.prototype._move = function(node, beforeNode) { - if (node == beforeNode) { - // nothing to do... - return; - } - - // check if this node is not a child of the node to be moved here - if (node.containsNode(this)) { - throw new Error('Cannot move a field into a child of itself'); - } - - // remove the original node - if (node.parent) { - node.parent.removeChild(node); - } - - // create a clone of the node - var clone = node.clone(); - node.clearDom(); - - // insert or append the node - if (beforeNode) { - this.insertBefore(clone, beforeNode); - } - else { - this.appendChild(clone); - } - - /* TODO: adjust the field name (to prevent equal field names) - if (this.type == 'object') { - } - */ - }; - - /** - * Remove a child from the node. - * Only applicable when Node value is of type array or object - * @param {Node} node The child node to be removed; - * @return {Node | undefined} node The removed node on success, - * else undefined - */ - Node.prototype.removeChild = function(node) { - if (this.childs) { - var index = this.childs.indexOf(node); - - if (index != -1) { - node.hide(); - - // delete old search results - delete node.searchField; - delete node.searchValue; - - var removedNode = this.childs.splice(index, 1)[0]; - - this.updateDom({'updateIndexes': true}); - - return removedNode; - } - } - - return undefined; - }; - - /** - * Remove a child node node from this node - * This method is equal to Node.removeChild, except that _remove firex an - * onChange event. - * @param {Node} node - * @private - */ - Node.prototype._remove = function (node) { - this.removeChild(node); - }; - - /** - * Change the type of the value of this Node - * @param {String} newType - */ - Node.prototype.changeType = function (newType) { - var oldType = this.type; - - if (oldType == newType) { - // type is not changed - return; - } - - if ((newType == 'string' || newType == 'auto') && - (oldType == 'string' || oldType == 'auto')) { - // this is an easy change - this.type = newType; - } - else { - // change from array to object, or from string/auto to object/array - var table = this.dom.tr ? this.dom.tr.parentNode : undefined; - var lastTr; - if (this.expanded) { - lastTr = this.getAppend(); - } - else { - lastTr = this.getDom(); - } - var nextTr = (lastTr && lastTr.parentNode) ? lastTr.nextSibling : undefined; - - // hide current field and all its childs - this.hide(); - this.clearDom(); - - // adjust the field and the value - this.type = newType; - - // adjust childs - if (newType == 'object') { - if (!this.childs) { - this.childs = []; - } - - this.childs.forEach(function (child, index) { - child.clearDom(); - delete child.index; - child.fieldEditable = true; - if (child.field == undefined) { - child.field = ''; - } - }); - - if (oldType == 'string' || oldType == 'auto') { - this.expanded = true; - } - } - else if (newType == 'array') { - if (!this.childs) { - this.childs = []; - } - - this.childs.forEach(function (child, index) { - child.clearDom(); - child.fieldEditable = false; - child.index = index; - }); - - if (oldType == 'string' || oldType == 'auto') { - this.expanded = true; - } - } - else { - this.expanded = false; - } - - // create new DOM - if (table) { - if (nextTr) { - table.insertBefore(this.getDom(), nextTr); - } - else { - table.appendChild(this.getDom()); - } - } - this.showChilds(); - } - - if (newType == 'auto' || newType == 'string') { - // cast value to the correct type - if (newType == 'string') { - this.value = String(this.value); - } - else { - this.value = this._stringCast(String(this.value)); - } - - this.focus(); - } - - this.updateDom({'updateIndexes': true}); - }; - - /** - * Retrieve value from DOM - * @param {boolean} [silent] If true (default), no errors will be thrown in - * case of invalid data - * @private - */ - Node.prototype._getDomValue = function(silent) { - if (this.dom.value && this.type != 'array' && this.type != 'object') { - this.valueInnerText = util.getInnerText(this.dom.value); - } - - if (this.valueInnerText != undefined) { - try { - // retrieve the value - var value; - if (this.type == 'string') { - value = this._unescapeHTML(this.valueInnerText); - } - else { - var str = this._unescapeHTML(this.valueInnerText); - value = this._stringCast(str); - } - if (value !== this.value) { - var oldValue = this.value; - this.value = value; - this.editor._onAction('editValue', { - 'node': this, - 'oldValue': oldValue, - 'newValue': value, - 'oldSelection': this.editor.selection, - 'newSelection': this.editor.getSelection() - }); - } - } - catch (err) { - this.value = undefined; - // TODO: sent an action with the new, invalid value? - if (silent != true) { - throw err; - } - } - } - }; - - /** - * Update dom value: - * - the text color of the value, depending on the type of the value - * - the height of the field, depending on the width - * - background color in case it is empty - * @private - */ - Node.prototype._updateDomValue = function () { - var domValue = this.dom.value; - if (domValue) { - // set text color depending on value type - // TODO: put colors in css - var v = this.value; - var t = (this.type == 'auto') ? util.type(v) : this.type; - var isUrl = (t == 'string' && util.isUrl(v)); - var color = ''; - if (isUrl && !this.editable.value) { // TODO: when to apply this? - color = ''; - } - else if (t == 'string') { - color = 'green'; - } - else if (t == 'number') { - color = 'red'; - } - else if (t == 'boolean') { - color = 'darkorange'; - } - else if (this._hasChilds()) { - color = ''; - } - else if (v === null) { - color = '#004ED0'; // blue - } - else { - // invalid value - color = 'black'; - } - domValue.style.color = color; - - // make background color light-gray when empty - var isEmpty = (String(this.value) == '' && this.type != 'array' && this.type != 'object'); - if (isEmpty) { - util.addClassName(domValue, 'empty'); - } - else { - util.removeClassName(domValue, 'empty'); - } - - // underline url - if (isUrl) { - util.addClassName(domValue, 'url'); - } - else { - util.removeClassName(domValue, 'url'); - } - - // update title - if (t == 'array' || t == 'object') { - var count = this.childs ? this.childs.length : 0; - domValue.title = this.type + ' containing ' + count + ' items'; - } - else if (t == 'string' && util.isUrl(v)) { - if (this.editable.value) { - domValue.title = 'Ctrl+Click or Ctrl+Enter to open url in new window'; - } - } - else { - domValue.title = ''; - } - - // highlight when there is a search result - if (this.searchValueActive) { - util.addClassName(domValue, 'highlight-active'); - } - else { - util.removeClassName(domValue, 'highlight-active'); - } - if (this.searchValue) { - util.addClassName(domValue, 'highlight'); - } - else { - util.removeClassName(domValue, 'highlight'); - } - - // strip formatting from the contents of the editable div - util.stripFormatting(domValue); - } - }; - - /** - * Update dom field: - * - the text color of the field, depending on the text - * - the height of the field, depending on the width - * - background color in case it is empty - * @private - */ - Node.prototype._updateDomField = function () { - var domField = this.dom.field; - if (domField) { - // make backgound color lightgray when empty - var isEmpty = (String(this.field) == '' && this.parent.type != 'array'); - if (isEmpty) { - util.addClassName(domField, 'empty'); - } - else { - util.removeClassName(domField, 'empty'); - } - - // highlight when there is a search result - if (this.searchFieldActive) { - util.addClassName(domField, 'highlight-active'); - } - else { - util.removeClassName(domField, 'highlight-active'); - } - if (this.searchField) { - util.addClassName(domField, 'highlight'); - } - else { - util.removeClassName(domField, 'highlight'); - } - - // strip formatting from the contents of the editable div - util.stripFormatting(domField); - } - }; - - /** - * Retrieve field from DOM - * @param {boolean} [silent] If true (default), no errors will be thrown in - * case of invalid data - * @private - */ - Node.prototype._getDomField = function(silent) { - if (this.dom.field && this.fieldEditable) { - this.fieldInnerText = util.getInnerText(this.dom.field); - } - - if (this.fieldInnerText != undefined) { - try { - var field = this._unescapeHTML(this.fieldInnerText); - - if (field !== this.field) { - var oldField = this.field; - this.field = field; - this.editor._onAction('editField', { - 'node': this, - 'oldValue': oldField, - 'newValue': field, - 'oldSelection': this.editor.selection, - 'newSelection': this.editor.getSelection() - }); - } - } - catch (err) { - this.field = undefined; - // TODO: sent an action here, with the new, invalid value? - if (silent != true) { - throw err; - } - } - } - }; - - /** - * Clear the dom of the node - */ - Node.prototype.clearDom = function() { - // TODO: hide the node first? - //this.hide(); - // TODO: recursively clear dom? - - this.dom = {}; - }; - - /** - * Get the HTML DOM TR element of the node. - * The dom will be generated when not yet created - * @return {Element} tr HTML DOM TR Element - */ - Node.prototype.getDom = function() { - var dom = this.dom; - if (dom.tr) { - return dom.tr; - } - - this._updateEditability(); - - // create row - dom.tr = document.createElement('tr'); - dom.tr.node = this; - - if (this.editor.options.mode === 'tree') { // note: we take here the global setting - var tdDrag = document.createElement('td'); - if (this.editable.field) { - // create draggable area - if (this.parent) { - var domDrag = document.createElement('button'); - dom.drag = domDrag; - domDrag.className = 'dragarea'; - domDrag.title = 'Drag to move this field (Alt+Shift+Arrows)'; - tdDrag.appendChild(domDrag); - } - } - dom.tr.appendChild(tdDrag); - - // create context menu - var tdMenu = document.createElement('td'); - var menu = document.createElement('button'); - dom.menu = menu; - menu.className = 'contextmenu'; - menu.title = 'Click to open the actions menu (Ctrl+M)'; - tdMenu.appendChild(dom.menu); - dom.tr.appendChild(tdMenu); - } - - // create tree and field - var tdField = document.createElement('td'); - dom.tr.appendChild(tdField); - dom.tree = this._createDomTree(); - tdField.appendChild(dom.tree); - - this.updateDom({'updateIndexes': true}); - - return dom.tr; - }; - - /** - * DragStart event, fired on mousedown on the dragarea at the left side of a Node - * @param {Event} event - * @private - */ - Node.prototype._onDragStart = function (event) { - var node = this; - if (!this.mousemove) { - this.mousemove = util.addEventListener(document, 'mousemove', - function (event) { - node._onDrag(event); - }); - } - - if (!this.mouseup) { - this.mouseup = util.addEventListener(document, 'mouseup', - function (event ) { - node._onDragEnd(event); - }); - } - - this.editor.highlighter.lock(); - this.drag = { - 'oldCursor': document.body.style.cursor, - 'startParent': this.parent, - 'startIndex': this.parent.childs.indexOf(this), - 'mouseX': event.pageX, - 'level': this.getLevel() - }; - document.body.style.cursor = 'move'; - - event.preventDefault(); - }; - - /** - * Drag event, fired when moving the mouse while dragging a Node - * @param {Event} event - * @private - */ - Node.prototype._onDrag = function (event) { - // TODO: this method has grown too large. Split it in a number of methods - var mouseY = event.pageY; - var mouseX = event.pageX; - - var trThis, trPrev, trNext, trFirst, trLast, trRoot; - var nodePrev, nodeNext; - var topThis, topPrev, topFirst, heightThis, bottomNext, heightNext; - var moved = false; - - // TODO: add an ESC option, which resets to the original position - - // move up/down - trThis = this.dom.tr; - topThis = util.getAbsoluteTop(trThis); - heightThis = trThis.offsetHeight; - if (mouseY < topThis) { - // move up - trPrev = trThis; - do { - trPrev = trPrev.previousSibling; - nodePrev = Node.getNodeFromTarget(trPrev); - topPrev = trPrev ? util.getAbsoluteTop(trPrev) : 0; - } - while (trPrev && mouseY < topPrev); - - if (nodePrev && !nodePrev.parent) { - nodePrev = undefined; - } - - if (!nodePrev) { - // move to the first node - trRoot = trThis.parentNode.firstChild; - trPrev = trRoot ? trRoot.nextSibling : undefined; - nodePrev = Node.getNodeFromTarget(trPrev); - if (nodePrev == this) { - nodePrev = undefined; - } - } - - if (nodePrev) { - // check if mouseY is really inside the found node - trPrev = nodePrev.dom.tr; - topPrev = trPrev ? util.getAbsoluteTop(trPrev) : 0; - if (mouseY > topPrev + heightThis) { - nodePrev = undefined; - } - } - - if (nodePrev) { - nodePrev.parent.moveBefore(this, nodePrev); - moved = true; - } - } - else { - // move down - trLast = (this.expanded && this.append) ? this.append.getDom() : this.dom.tr; - trFirst = trLast ? trLast.nextSibling : undefined; - if (trFirst) { - topFirst = util.getAbsoluteTop(trFirst); - trNext = trFirst; - do { - nodeNext = Node.getNodeFromTarget(trNext); - if (trNext) { - bottomNext = trNext.nextSibling ? - util.getAbsoluteTop(trNext.nextSibling) : 0; - heightNext = trNext ? (bottomNext - topFirst) : 0; - - if (nodeNext.parent.childs.length == 1 && nodeNext.parent.childs[0] == this) { - // We are about to remove the last child of this parent, - // which will make the parents appendNode visible. - topThis += 24 - 1; - // TODO: dangerous to suppose the height of the appendNode a constant of 24-1 px. - } - } - - trNext = trNext.nextSibling; - } - while (trNext && mouseY > topThis + heightNext); - - if (nodeNext && nodeNext.parent) { - // calculate the desired level - var diffX = (mouseX - this.drag.mouseX); - var diffLevel = Math.round(diffX / 24 / 2); - var level = this.drag.level + diffLevel; // desired level - var levelNext = nodeNext.getLevel(); // level to be - - // find the best fitting level (move upwards over the append nodes) - trPrev = nodeNext.dom.tr.previousSibling; - while (levelNext < level && trPrev) { - nodePrev = Node.getNodeFromTarget(trPrev); - if (nodePrev == this || nodePrev._isChildOf(this)) { - // neglect itself and its childs - } - else if (nodePrev instanceof AppendNode) { - var childs = nodePrev.parent.childs; - if (childs.length > 1 || - (childs.length == 1 && childs[0] != this)) { - // non-visible append node of a list of childs - // consisting of not only this node (else the - // append node will change into a visible "empty" - // text when removing this node). - nodeNext = Node.getNodeFromTarget(trPrev); - levelNext = nodeNext.getLevel(); - } - else { - break; - } - } - else { - break; - } - - trPrev = trPrev.previousSibling; - } - - // move the node when its position is changed - if (trLast.nextSibling != nodeNext.dom.tr) { - nodeNext.parent.moveBefore(this, nodeNext); - moved = true; - } - } - } - } - - if (moved) { - // update the dragging parameters when moved - this.drag.mouseX = mouseX; - this.drag.level = this.getLevel(); - } - - // auto scroll when hovering around the top of the editor - this.editor.startAutoScroll(mouseY); - - event.preventDefault(); - }; - - /** - * Drag event, fired on mouseup after having dragged a node - * @param {Event} event - * @private - */ - Node.prototype._onDragEnd = function (event) { - var params = { - 'node': this, - 'startParent': this.drag.startParent, - 'startIndex': this.drag.startIndex, - 'endParent': this.parent, - 'endIndex': this.parent.childs.indexOf(this) - }; - if ((params.startParent != params.endParent) || - (params.startIndex != params.endIndex)) { - // only register this action if the node is actually moved to another place - this.editor._onAction('moveNode', params); - } - - document.body.style.cursor = this.drag.oldCursor; - this.editor.highlighter.unlock(); - delete this.drag; - - if (this.mousemove) { - util.removeEventListener(document, 'mousemove', this.mousemove); - delete this.mousemove;} - if (this.mouseup) { - util.removeEventListener(document, 'mouseup', this.mouseup); - delete this.mouseup; - } - - // Stop any running auto scroll - this.editor.stopAutoScroll(); - - event.preventDefault(); - }; - - /** - * Test if this node is a child of an other node - * @param {Node} node - * @return {boolean} isChild - * @private - */ - Node.prototype._isChildOf = function (node) { - var n = this.parent; - while (n) { - if (n == node) { - return true; - } - n = n.parent; - } - - return false; - }; - - /** - * Create an editable field - * @return {Element} domField - * @private - */ - Node.prototype._createDomField = function () { - return document.createElement('div'); - }; - - /** - * Set highlighting for this node and all its childs. - * Only applied to the currently visible (expanded childs) - * @param {boolean} highlight - */ - Node.prototype.setHighlight = function (highlight) { - if (this.dom.tr) { - this.dom.tr.className = (highlight ? 'highlight' : ''); - - if (this.append) { - this.append.setHighlight(highlight); - } - - if (this.childs) { - this.childs.forEach(function (child) { - child.setHighlight(highlight); - }); - } - } - }; - - /** - * Update the value of the node. Only primitive types are allowed, no Object - * or Array is allowed. - * @param {String | Number | Boolean | null} value - */ - Node.prototype.updateValue = function (value) { - this.value = value; - this.updateDom(); - }; - - /** - * Update the field of the node. - * @param {String} field - */ - Node.prototype.updateField = function (field) { - this.field = field; - this.updateDom(); - }; - - /** - * Update the HTML DOM, optionally recursing through the childs - * @param {Object} [options] Available parameters: - * {boolean} [recurse] If true, the - * DOM of the childs will be updated recursively. - * False by default. - * {boolean} [updateIndexes] If true, the childs - * indexes of the node will be updated too. False by - * default. - */ - Node.prototype.updateDom = function (options) { - // update level indentation - var domTree = this.dom.tree; - if (domTree) { - domTree.style.marginLeft = this.getLevel() * 24 + 'px'; - } - - // update field - var domField = this.dom.field; - if (domField) { - if (this.fieldEditable) { - // parent is an object - domField.contentEditable = this.editable.field; - domField.spellcheck = false; - domField.className = 'field'; - } - else { - // parent is an array this is the root node - domField.className = 'readonly'; - } - - var field; - if (this.index != undefined) { - field = this.index; - } - else if (this.field != undefined) { - field = this.field; - } - else if (this._hasChilds()) { - field = this.type; - } - else { - field = ''; - } - domField.innerHTML = this._escapeHTML(field); - } - - // update value - var domValue = this.dom.value; - if (domValue) { - var count = this.childs ? this.childs.length : 0; - if (this.type == 'array') { - domValue.innerHTML = '[' + count + ']'; - } - else if (this.type == 'object') { - domValue.innerHTML = '{' + count + '}'; - } - else { - domValue.innerHTML = this._escapeHTML(this.value); - } - } - - // update field and value - this._updateDomField(); - this._updateDomValue(); - - // update childs indexes - if (options && options.updateIndexes == true) { - // updateIndexes is true or undefined - this._updateDomIndexes(); - } - - if (options && options.recurse == true) { - // recurse is true or undefined. update childs recursively - if (this.childs) { - this.childs.forEach(function (child) { - child.updateDom(options); - }); - } - } - - // update row with append button - if (this.append) { - this.append.updateDom(); - } - }; - - /** - * Update the DOM of the childs of a node: update indexes and undefined field - * names. - * Only applicable when structure is an array or object - * @private - */ - Node.prototype._updateDomIndexes = function () { - var domValue = this.dom.value; - var childs = this.childs; - if (domValue && childs) { - if (this.type == 'array') { - childs.forEach(function (child, index) { - child.index = index; - var childField = child.dom.field; - if (childField) { - childField.innerHTML = index; - } - }); - } - else if (this.type == 'object') { - childs.forEach(function (child) { - if (child.index != undefined) { - delete child.index; - - if (child.field == undefined) { - child.field = ''; - } - } - }); - } - } - }; - - /** - * Create an editable value - * @private - */ - Node.prototype._createDomValue = function () { - var domValue; - - if (this.type == 'array') { - domValue = document.createElement('div'); - domValue.className = 'readonly'; - domValue.innerHTML = '[...]'; - } - else if (this.type == 'object') { - domValue = document.createElement('div'); - domValue.className = 'readonly'; - domValue.innerHTML = '{...}'; - } - else { - if (!this.editable.value && util.isUrl(this.value)) { - // create a link in case of read-only editor and value containing an url - domValue = document.createElement('a'); - domValue.className = 'value'; - domValue.href = this.value; - domValue.target = '_blank'; - domValue.innerHTML = this._escapeHTML(this.value); - } - else { - // create an editable or read-only div - domValue = document.createElement('div'); - domValue.contentEditable = this.editable.value; - domValue.spellcheck = false; - domValue.className = 'value'; - domValue.innerHTML = this._escapeHTML(this.value); - } - } - - return domValue; - }; - - /** - * Create an expand/collapse button - * @return {Element} expand - * @private - */ - Node.prototype._createDomExpandButton = function () { - // create expand button - var expand = document.createElement('button'); - if (this._hasChilds()) { - expand.className = this.expanded ? 'expanded' : 'collapsed'; - expand.title = - 'Click to expand/collapse this field (Ctrl+E). \n' + - 'Ctrl+Click to expand/collapse including all childs.'; - } - else { - expand.className = 'invisible'; - expand.title = ''; - } - - return expand; - }; - - - /** - * Create a DOM tree element, containing the expand/collapse button - * @return {Element} domTree - * @private - */ - Node.prototype._createDomTree = function () { - var dom = this.dom; - var domTree = document.createElement('table'); - var tbody = document.createElement('tbody'); - domTree.style.borderCollapse = 'collapse'; // TODO: put in css - domTree.className = 'values'; - domTree.appendChild(tbody); - var tr = document.createElement('tr'); - tbody.appendChild(tr); - - // create expand button - var tdExpand = document.createElement('td'); - tdExpand.className = 'tree'; - tr.appendChild(tdExpand); - dom.expand = this._createDomExpandButton(); - tdExpand.appendChild(dom.expand); - dom.tdExpand = tdExpand; - - // create the field - var tdField = document.createElement('td'); - tdField.className = 'tree'; - tr.appendChild(tdField); - dom.field = this._createDomField(); - tdField.appendChild(dom.field); - dom.tdField = tdField; - - // create a separator - var tdSeparator = document.createElement('td'); - tdSeparator.className = 'tree'; - tr.appendChild(tdSeparator); - if (this.type != 'object' && this.type != 'array') { - tdSeparator.appendChild(document.createTextNode(':')); - tdSeparator.className = 'separator'; - } - dom.tdSeparator = tdSeparator; - - // create the value - var tdValue = document.createElement('td'); - tdValue.className = 'tree'; - tr.appendChild(tdValue); - dom.value = this._createDomValue(); - tdValue.appendChild(dom.value); - dom.tdValue = tdValue; - - return domTree; - }; - - /** - * Handle an event. The event is catched centrally by the editor - * @param {Event} event - */ - Node.prototype.onEvent = function (event) { - var type = event.type, - target = event.target || event.srcElement, - dom = this.dom, - node = this, - focusNode, - expandable = this._hasChilds(); - - // check if mouse is on menu or on dragarea. - // If so, highlight current row and its childs - if (target == dom.drag || target == dom.menu) { - if (type == 'mouseover') { - this.editor.highlighter.highlight(this); - } - else if (type == 'mouseout') { - this.editor.highlighter.unhighlight(); - } - } - - // drag events - if (type == 'mousedown' && target == dom.drag) { - this._onDragStart(event); - } - - // context menu events - if (type == 'click' && target == dom.menu) { - var highlighter = node.editor.highlighter; - highlighter.highlight(node); - highlighter.lock(); - util.addClassName(dom.menu, 'selected'); - this.showContextMenu(dom.menu, function () { - util.removeClassName(dom.menu, 'selected'); - highlighter.unlock(); - highlighter.unhighlight(); - }); - } - - // expand events - if (type == 'click' && target == dom.expand) { - if (expandable) { - var recurse = event.ctrlKey; // with ctrl-key, expand/collapse all - this._onExpand(recurse); - } - } - - // value events - var domValue = dom.value; - if (target == domValue) { - //noinspection FallthroughInSwitchStatementJS - switch (type) { - case 'focus': - focusNode = this; - break; - - case 'blur': - case 'change': - this._getDomValue(true); - this._updateDomValue(); - if (this.value) { - domValue.innerHTML = this._escapeHTML(this.value); - } - break; - - case 'input': - this._getDomValue(true); - this._updateDomValue(); - break; - - case 'keydown': - case 'mousedown': - this.editor.selection = this.editor.getSelection(); - break; - - case 'click': - if (event.ctrlKey || !this.editable.value) { - if (util.isUrl(this.value)) { - window.open(this.value, '_blank'); - } - } - break; - - case 'keyup': - this._getDomValue(true); - this._updateDomValue(); - break; - - case 'cut': - case 'paste': - setTimeout(function () { - node._getDomValue(true); - node._updateDomValue(); - }, 1); - break; - } - } - - // field events - var domField = dom.field; - if (target == domField) { - switch (type) { - case 'focus': - focusNode = this; - break; - - case 'blur': - case 'change': - this._getDomField(true); - this._updateDomField(); - if (this.field) { - domField.innerHTML = this._escapeHTML(this.field); - } - break; - - case 'input': - this._getDomField(true); - this._updateDomField(); - break; - - case 'keydown': - case 'mousedown': - this.editor.selection = this.editor.getSelection(); - break; - - case 'keyup': - this._getDomField(true); - this._updateDomField(); - break; - - case 'cut': - case 'paste': - setTimeout(function () { - node._getDomField(true); - node._updateDomField(); - }, 1); - break; - } - } - - // focus - // when clicked in whitespace left or right from the field or value, set focus - var domTree = dom.tree; - if (target == domTree.parentNode) { - switch (type) { - case 'click': - var left = (event.offsetX != undefined) ? - (event.offsetX < (this.getLevel() + 1) * 24) : - (event.pageX < util.getAbsoluteLeft(dom.tdSeparator));// for FF - if (left || expandable) { - // node is expandable when it is an object or array - if (domField) { - util.setEndOfContentEditable(domField); - domField.focus(); - } - } - else { - if (domValue) { - util.setEndOfContentEditable(domValue); - domValue.focus(); - } - } - break; - } - } - if ((target == dom.tdExpand && !expandable) || target == dom.tdField || - target == dom.tdSeparator) { - switch (type) { - case 'click': - if (domField) { - util.setEndOfContentEditable(domField); - domField.focus(); - } - break; - } - } - - if (type == 'keydown') { - this.onKeyDown(event); - } - }; - - /** - * Key down event handler - * @param {Event} event - */ - Node.prototype.onKeyDown = function (event) { - var keynum = event.which || event.keyCode; - var target = event.target || event.srcElement; - var ctrlKey = event.ctrlKey; - var shiftKey = event.shiftKey; - var altKey = event.altKey; - var handled = false; - var prevNode, nextNode, nextDom, nextDom2; - var editable = this.editor.options.mode === 'tree'; - - // util.log(ctrlKey, keynum, event.charCode); // TODO: cleanup - if (keynum == 13) { // Enter - if (target == this.dom.value) { - if (!this.editable.value || event.ctrlKey) { - if (util.isUrl(this.value)) { - window.open(this.value, '_blank'); - handled = true; - } - } - } - else if (target == this.dom.expand) { - var expandable = this._hasChilds(); - if (expandable) { - var recurse = event.ctrlKey; // with ctrl-key, expand/collapse all - this._onExpand(recurse); - target.focus(); - handled = true; - } - } - } - else if (keynum == 68) { // D - if (ctrlKey && editable) { // Ctrl+D - this._onDuplicate(); - handled = true; - } - } - else if (keynum == 69) { // E - if (ctrlKey) { // Ctrl+E and Ctrl+Shift+E - this._onExpand(shiftKey); // recurse = shiftKey - target.focus(); // TODO: should restore focus in case of recursing expand (which takes DOM offline) - handled = true; - } - } - else if (keynum == 77 && editable) { // M - if (ctrlKey) { // Ctrl+M - this.showContextMenu(target); - handled = true; - } - } - else if (keynum == 46 && editable) { // Del - if (ctrlKey) { // Ctrl+Del - this._onRemove(); - handled = true; - } - } - else if (keynum == 45 && editable) { // Ins - if (ctrlKey && !shiftKey) { // Ctrl+Ins - this._onInsertBefore(); - handled = true; - } - else if (ctrlKey && shiftKey) { // Ctrl+Shift+Ins - this._onInsertAfter(); - handled = true; - } - } - else if (keynum == 35) { // End - if (altKey) { // Alt+End - // find the last node - var lastNode = this._lastNode(); - if (lastNode) { - lastNode.focus(Node.focusElement || this._getElementName(target)); - } - handled = true; - } - } - else if (keynum == 36) { // Home - if (altKey) { // Alt+Home - // find the first node - var firstNode = this._firstNode(); - if (firstNode) { - firstNode.focus(Node.focusElement || this._getElementName(target)); - } - handled = true; - } - } - else if (keynum == 37) { // Arrow Left - if (altKey && !shiftKey) { // Alt + Arrow Left - // move to left element - var prevElement = this._previousElement(target); - if (prevElement) { - this.focus(this._getElementName(prevElement)); - } - handled = true; - } - else if (altKey && shiftKey && editable) { // Alt + Shift Arrow left - if (this.expanded) { - var appendDom = this.getAppend(); - nextDom = appendDom ? appendDom.nextSibling : undefined; - } - else { - var dom = this.getDom(); - nextDom = dom.nextSibling; - } - if (nextDom) { - nextNode = Node.getNodeFromTarget(nextDom); - nextDom2 = nextDom.nextSibling; - nextNode2 = Node.getNodeFromTarget(nextDom2); - if (nextNode && nextNode instanceof AppendNode && - !(this.parent.childs.length == 1) && - nextNode2 && nextNode2.parent) { - nextNode2.parent.moveBefore(this, nextNode2); - this.focus(Node.focusElement || this._getElementName(target)); - } - } - } - } - else if (keynum == 38) { // Arrow Up - if (altKey && !shiftKey) { // Alt + Arrow Up - // find the previous node - prevNode = this._previousNode(); - if (prevNode) { - prevNode.focus(Node.focusElement || this._getElementName(target)); - } - handled = true; - } - else if (altKey && shiftKey) { // Alt + Shift + Arrow Up - // find the previous node - prevNode = this._previousNode(); - if (prevNode && prevNode.parent) { - prevNode.parent.moveBefore(this, prevNode); - this.focus(Node.focusElement || this._getElementName(target)); - } - handled = true; - } - } - else if (keynum == 39) { // Arrow Right - if (altKey && !shiftKey) { // Alt + Arrow Right - // move to right element - var nextElement = this._nextElement(target); - if (nextElement) { - this.focus(this._getElementName(nextElement)); - } - handled = true; - } - else if (altKey && shiftKey) { // Alt + Shift Arrow Right - dom = this.getDom(); - var prevDom = dom.previousSibling; - if (prevDom) { - prevNode = Node.getNodeFromTarget(prevDom); - if (prevNode && prevNode.parent && - (prevNode instanceof AppendNode) - && !prevNode.isVisible()) { - prevNode.parent.moveBefore(this, prevNode); - this.focus(Node.focusElement || this._getElementName(target)); - } - } - } - } - else if (keynum == 40) { // Arrow Down - if (altKey && !shiftKey) { // Alt + Arrow Down - // find the next node - nextNode = this._nextNode(); - if (nextNode) { - nextNode.focus(Node.focusElement || this._getElementName(target)); - } - handled = true; - } - else if (altKey && shiftKey && editable) { // Alt + Shift + Arrow Down - // find the 2nd next node and move before that one - if (this.expanded) { - nextNode = this.append ? this.append._nextNode() : undefined; - } - else { - nextNode = this._nextNode(); - } - nextDom = nextNode ? nextNode.getDom() : undefined; - if (this.parent.childs.length == 1) { - nextDom2 = nextDom; - } - else { - nextDom2 = nextDom ? nextDom.nextSibling : undefined; - } - var nextNode2 = Node.getNodeFromTarget(nextDom2); - if (nextNode2 && nextNode2.parent) { - nextNode2.parent.moveBefore(this, nextNode2); - this.focus(Node.focusElement || this._getElementName(target)); - } - handled = true; - } - } - - if (handled) { - event.preventDefault(); - event.stopPropagation(); - } - }; - - /** - * Handle the expand event, when clicked on the expand button - * @param {boolean} recurse If true, child nodes will be expanded too - * @private - */ - Node.prototype._onExpand = function (recurse) { - if (recurse) { - // Take the table offline - var table = this.dom.tr.parentNode; // TODO: not nice to access the main table like this - var frame = table.parentNode; - var scrollTop = frame.scrollTop; - frame.removeChild(table); - } - - if (this.expanded) { - this.collapse(recurse); - } - else { - this.expand(recurse); - } - - if (recurse) { - // Put the table online again - frame.appendChild(table); - frame.scrollTop = scrollTop; - } - }; - - /** - * Remove this node - * @private - */ - Node.prototype._onRemove = function() { - this.editor.highlighter.unhighlight(); - var childs = this.parent.childs; - var index = childs.indexOf(this); - - // adjust the focus - var oldSelection = this.editor.getSelection(); - if (childs[index + 1]) { - childs[index + 1].focus(); - } - else if (childs[index - 1]) { - childs[index - 1].focus(); - } - else { - this.parent.focus(); - } - var newSelection = this.editor.getSelection(); - - // remove the node - this.parent._remove(this); - - // store history action - this.editor._onAction('removeNode', { - node: this, - parent: this.parent, - index: index, - oldSelection: oldSelection, - newSelection: newSelection - }); - }; - - /** - * Duplicate this node - * @private - */ - Node.prototype._onDuplicate = function() { - var oldSelection = this.editor.getSelection(); - var clone = this.parent._duplicate(this); - clone.focus(); - var newSelection = this.editor.getSelection(); - - this.editor._onAction('duplicateNode', { - node: this, - clone: clone, - parent: this.parent, - oldSelection: oldSelection, - newSelection: newSelection - }); - }; - - /** - * Handle insert before event - * @param {String} [field] - * @param {*} [value] - * @param {String} [type] Can be 'auto', 'array', 'object', or 'string' - * @private - */ - Node.prototype._onInsertBefore = function (field, value, type) { - var oldSelection = this.editor.getSelection(); - - var newNode = new Node(this.editor, { - field: (field != undefined) ? field : '', - value: (value != undefined) ? value : '', - type: type - }); - newNode.expand(true); - this.parent.insertBefore(newNode, this); - this.editor.highlighter.unhighlight(); - newNode.focus('field'); - var newSelection = this.editor.getSelection(); - - this.editor._onAction('insertBeforeNode', { - node: newNode, - beforeNode: this, - parent: this.parent, - oldSelection: oldSelection, - newSelection: newSelection - }); - }; - - /** - * Handle insert after event - * @param {String} [field] - * @param {*} [value] - * @param {String} [type] Can be 'auto', 'array', 'object', or 'string' - * @private - */ - Node.prototype._onInsertAfter = function (field, value, type) { - var oldSelection = this.editor.getSelection(); - - var newNode = new Node(this.editor, { - field: (field != undefined) ? field : '', - value: (value != undefined) ? value : '', - type: type - }); - newNode.expand(true); - this.parent.insertAfter(newNode, this); - this.editor.highlighter.unhighlight(); - newNode.focus('field'); - var newSelection = this.editor.getSelection(); - - this.editor._onAction('insertAfterNode', { - node: newNode, - afterNode: this, - parent: this.parent, - oldSelection: oldSelection, - newSelection: newSelection - }); - }; - - /** - * Handle append event - * @param {String} [field] - * @param {*} [value] - * @param {String} [type] Can be 'auto', 'array', 'object', or 'string' - * @private - */ - Node.prototype._onAppend = function (field, value, type) { - var oldSelection = this.editor.getSelection(); - - var newNode = new Node(this.editor, { - field: (field != undefined) ? field : '', - value: (value != undefined) ? value : '', - type: type - }); - newNode.expand(true); - this.parent.appendChild(newNode); - this.editor.highlighter.unhighlight(); - newNode.focus('field'); - var newSelection = this.editor.getSelection(); - - this.editor._onAction('appendNode', { - node: newNode, - parent: this.parent, - oldSelection: oldSelection, - newSelection: newSelection - }); - }; - - /** - * Change the type of the node's value - * @param {String} newType - * @private - */ - Node.prototype._onChangeType = function (newType) { - var oldType = this.type; - if (newType != oldType) { - var oldSelection = this.editor.getSelection(); - this.changeType(newType); - var newSelection = this.editor.getSelection(); - - this.editor._onAction('changeType', { - node: this, - oldType: oldType, - newType: newType, - oldSelection: oldSelection, - newSelection: newSelection - }); - } - }; - - /** - * Sort the childs of the node. Only applicable when the node has type 'object' - * or 'array'. - * @param {String} direction Sorting direction. Available values: "asc", "desc" - * @private - */ - Node.prototype._onSort = function (direction) { - if (this._hasChilds()) { - var order = (direction == 'desc') ? -1 : 1; - var prop = (this.type == 'array') ? 'value': 'field'; - this.hideChilds(); - - var oldChilds = this.childs; - var oldSort = this.sort; - - // copy the array (the old one will be kept for an undo action - this.childs = this.childs.concat(); - - // sort the arrays - this.childs.sort(function (a, b) { - if (a[prop] > b[prop]) return order; - if (a[prop] < b[prop]) return -order; - return 0; - }); - this.sort = (order == 1) ? 'asc' : 'desc'; - - this.editor._onAction('sort', { - node: this, - oldChilds: oldChilds, - oldSort: oldSort, - newChilds: this.childs, - newSort: this.sort - }); - - this.showChilds(); - } - }; - - /** - * Create a table row with an append button. - * @return {HTMLElement | undefined} buttonAppend or undefined when inapplicable - */ - Node.prototype.getAppend = function () { - if (!this.append) { - this.append = new AppendNode(this.editor); - this.append.setParent(this); - } - return this.append.getDom(); - }; - - /** - * Find the node from an event target - * @param {Node} target - * @return {Node | undefined} node or undefined when not found - * @static - */ - Node.getNodeFromTarget = function (target) { - while (target) { - if (target.node) { - return target.node; - } - target = target.parentNode; - } - - return undefined; - }; - - /** - * Get the previously rendered node - * @return {Node | null} previousNode - * @private - */ - Node.prototype._previousNode = function () { - var prevNode = null; - var dom = this.getDom(); - if (dom && dom.parentNode) { - // find the previous field - var prevDom = dom; - do { - prevDom = prevDom.previousSibling; - prevNode = Node.getNodeFromTarget(prevDom); - } - while (prevDom && (prevNode instanceof AppendNode && !prevNode.isVisible())); - } - return prevNode; - }; - - /** - * Get the next rendered node - * @return {Node | null} nextNode - * @private - */ - Node.prototype._nextNode = function () { - var nextNode = null; - var dom = this.getDom(); - if (dom && dom.parentNode) { - // find the previous field - var nextDom = dom; - do { - nextDom = nextDom.nextSibling; - nextNode = Node.getNodeFromTarget(nextDom); - } - while (nextDom && (nextNode instanceof AppendNode && !nextNode.isVisible())); - } - - return nextNode; - }; - - /** - * Get the first rendered node - * @return {Node | null} firstNode - * @private - */ - Node.prototype._firstNode = function () { - var firstNode = null; - var dom = this.getDom(); - if (dom && dom.parentNode) { - var firstDom = dom.parentNode.firstChild; - firstNode = Node.getNodeFromTarget(firstDom); - } - - return firstNode; - }; - - /** - * Get the last rendered node - * @return {Node | null} lastNode - * @private - */ - Node.prototype._lastNode = function () { - var lastNode = null; - var dom = this.getDom(); - if (dom && dom.parentNode) { - var lastDom = dom.parentNode.lastChild; - lastNode = Node.getNodeFromTarget(lastDom); - while (lastDom && (lastNode instanceof AppendNode && !lastNode.isVisible())) { - lastDom = lastDom.previousSibling; - lastNode = Node.getNodeFromTarget(lastDom); - } - } - return lastNode; - }; - - /** - * Get the next element which can have focus. - * @param {Element} elem - * @return {Element | null} nextElem - * @private - */ - Node.prototype._previousElement = function (elem) { - var dom = this.dom; - // noinspection FallthroughInSwitchStatementJS - switch (elem) { - case dom.value: - if (this.fieldEditable) { - return dom.field; - } - // intentional fall through - case dom.field: - if (this._hasChilds()) { - return dom.expand; - } - // intentional fall through - case dom.expand: - return dom.menu; - case dom.menu: - if (dom.drag) { - return dom.drag; - } - // intentional fall through - default: - return null; - } - }; - - /** - * Get the next element which can have focus. - * @param {Element} elem - * @return {Element | null} nextElem - * @private - */ - Node.prototype._nextElement = function (elem) { - var dom = this.dom; - // noinspection FallthroughInSwitchStatementJS - switch (elem) { - case dom.drag: - return dom.menu; - case dom.menu: - if (this._hasChilds()) { - return dom.expand; - } - // intentional fall through - case dom.expand: - if (this.fieldEditable) { - return dom.field; - } - // intentional fall through - case dom.field: - if (!this._hasChilds()) { - return dom.value; - } - default: - return null; - } - }; - - /** - * Get the dom name of given element. returns null if not found. - * For example when element == dom.field, "field" is returned. - * @param {Element} element - * @return {String | null} elementName Available elements with name: 'drag', - * 'menu', 'expand', 'field', 'value' - * @private - */ - Node.prototype._getElementName = function (element) { - var dom = this.dom; - for (var name in dom) { - if (dom.hasOwnProperty(name)) { - if (dom[name] == element) { - return name; - } - } - } - return null; - }; - - /** - * Test if this node has childs. This is the case when the node is an object - * or array. - * @return {boolean} hasChilds - * @private - */ - Node.prototype._hasChilds = function () { - return this.type == 'array' || this.type == 'object'; - }; - - // titles with explanation for the different types - Node.TYPE_TITLES = { - 'auto': 'Field type "auto". ' + - 'The field type is automatically determined from the value ' + - 'and can be a string, number, boolean, or null.', - 'object': 'Field type "object". ' + - 'An object contains an unordered set of key/value pairs.', - 'array': 'Field type "array". ' + - 'An array contains an ordered collection of values.', - 'string': 'Field type "string". ' + - 'Field type is not determined from the value, ' + - 'but always returned as string.' - }; - - /** - * Show a contextmenu for this node - * @param {HTMLElement} anchor Anchor element to attache the context menu to. - * @param {function} [onClose] Callback method called when the context menu - * is being closed. - */ - Node.prototype.showContextMenu = function (anchor, onClose) { - var node = this; - var titles = Node.TYPE_TITLES; - var items = []; - - if (this.editable.value) { - items.push({ - text: 'Type', - title: 'Change the type of this field', - className: 'type-' + this.type, - submenu: [ - { - text: 'Auto', - className: 'type-auto' + - (this.type == 'auto' ? ' selected' : ''), - title: titles.auto, - click: function () { - node._onChangeType('auto'); - } - }, - { - text: 'Array', - className: 'type-array' + - (this.type == 'array' ? ' selected' : ''), - title: titles.array, - click: function () { - node._onChangeType('array'); - } - }, - { - text: 'Object', - className: 'type-object' + - (this.type == 'object' ? ' selected' : ''), - title: titles.object, - click: function () { - node._onChangeType('object'); - } - }, - { - text: 'String', - className: 'type-string' + - (this.type == 'string' ? ' selected' : ''), - title: titles.string, - click: function () { - node._onChangeType('string'); - } - } - ] - }); - } - - if (this._hasChilds()) { - var direction = ((this.sort == 'asc') ? 'desc': 'asc'); - items.push({ - text: 'Sort', - title: 'Sort the childs of this ' + this.type, - className: 'sort-' + direction, - click: function () { - node._onSort(direction); - }, - submenu: [ - { - text: 'Ascending', - className: 'sort-asc', - title: 'Sort the childs of this ' + this.type + ' in ascending order', - click: function () { - node._onSort('asc'); - } - }, - { - text: 'Descending', - className: 'sort-desc', - title: 'Sort the childs of this ' + this.type +' in descending order', - click: function () { - node._onSort('desc'); - } - } - ] - }); - } - - if (this.parent && this.parent._hasChilds()) { - if (items.length) { - // create a separator - items.push({ - 'type': 'separator' - }); - } - - // create append button (for last child node only) - var childs = node.parent.childs; - if (node == childs[childs.length - 1]) { - items.push({ - text: 'Append', - title: 'Append a new field with type \'auto\' after this field (Ctrl+Shift+Ins)', - submenuTitle: 'Select the type of the field to be appended', - className: 'append', - click: function () { - node._onAppend('', '', 'auto'); - }, - submenu: [ - { - text: 'Auto', - className: 'type-auto', - title: titles.auto, - click: function () { - node._onAppend('', '', 'auto'); - } - }, - { - text: 'Array', - className: 'type-array', - title: titles.array, - click: function () { - node._onAppend('', []); - } - }, - { - text: 'Object', - className: 'type-object', - title: titles.object, - click: function () { - node._onAppend('', {}); - } - }, - { - text: 'String', - className: 'type-string', - title: titles.string, - click: function () { - node._onAppend('', '', 'string'); - } - } - ] - }); - } - - // create insert button - items.push({ - text: 'Insert', - title: 'Insert a new field with type \'auto\' before this field (Ctrl+Ins)', - submenuTitle: 'Select the type of the field to be inserted', - className: 'insert', - click: function () { - node._onInsertBefore('', '', 'auto'); - }, - submenu: [ - { - text: 'Auto', - className: 'type-auto', - title: titles.auto, - click: function () { - node._onInsertBefore('', '', 'auto'); - } - }, - { - text: 'Array', - className: 'type-array', - title: titles.array, - click: function () { - node._onInsertBefore('', []); - } - }, - { - text: 'Object', - className: 'type-object', - title: titles.object, - click: function () { - node._onInsertBefore('', {}); - } - }, - { - text: 'String', - className: 'type-string', - title: titles.string, - click: function () { - node._onInsertBefore('', '', 'string'); - } - } - ] - }); - - if (this.editable.field) { - // create duplicate button - items.push({ - text: 'Duplicate', - title: 'Duplicate this field (Ctrl+D)', - className: 'duplicate', - click: function () { - node._onDuplicate(); - } - }); - - // create remove button - items.push({ - text: 'Remove', - title: 'Remove this field (Ctrl+Del)', - className: 'remove', - click: function () { - node._onRemove(); - } - }); - } - } - - var menu = new ContextMenu(items, {close: onClose}); - menu.show(anchor); - }; - - /** - * get the type of a value - * @param {*} value - * @return {String} type Can be 'object', 'array', 'string', 'auto' - * @private - */ - Node.prototype._getType = function(value) { - if (value instanceof Array) { - return 'array'; - } - if (value instanceof Object) { - return 'object'; - } - if (typeof(value) == 'string' && typeof(this._stringCast(value)) != 'string') { - return 'string'; - } - - return 'auto'; - }; - - /** - * cast contents of a string to the correct type. This can be a string, - * a number, a boolean, etc - * @param {String} str - * @return {*} castedStr - * @private - */ - Node.prototype._stringCast = function(str) { - var lower = str.toLowerCase(), - num = Number(str), // will nicely fail with '123ab' - numFloat = parseFloat(str); // will nicely fail with ' ' - - if (str == '') { - return ''; - } - else if (lower == 'null') { - return null; - } - else if (lower == 'true') { - return true; - } - else if (lower == 'false') { - return false; - } - else if (!isNaN(num) && !isNaN(numFloat)) { - return num; - } - else { - return str; - } - }; - - /** - * escape a text, such that it can be displayed safely in an HTML element - * @param {String} text - * @return {String} escapedText - * @private - */ - Node.prototype._escapeHTML = function (text) { - var htmlEscaped = String(text) - .replace(//g, '>') - .replace(/ /g, '  ') // replace double space with an nbsp and space - .replace(/^ /, ' ') // space at start - .replace(/ $/, ' '); // space at end - - var json = JSON.stringify(htmlEscaped); - return json.substring(1, json.length - 1); - }; - - /** - * unescape a string. - * @param {String} escapedText - * @return {String} text - * @private - */ - Node.prototype._unescapeHTML = function (escapedText) { - var json = '"' + this._escapeJSON(escapedText) + '"'; - var htmlEscaped = util.parse(json); - return htmlEscaped - .replace(/</g, '<') - .replace(/>/g, '>') - .replace(/ |\u00A0/g, ' '); - }; - - /** - * escape a text to make it a valid JSON string. The method will: - * - replace unescaped double quotes with '\"' - * - replace unescaped backslash with '\\' - * - replace returns with '\n' - * @param {String} text - * @return {String} escapedText - * @private - */ - Node.prototype._escapeJSON = function (text) { - // TODO: replace with some smart regex (only when a new solution is faster!) - var escaped = ''; - var i = 0, iMax = text.length; - while (i < iMax) { - var c = text.charAt(i); - if (c == '\n') { - escaped += '\\n'; - } - else if (c == '\\') { - escaped += c; - i++; - - c = text.charAt(i); - if ('"\\/bfnrtu'.indexOf(c) == -1) { - escaped += '\\'; // no valid escape character - } - escaped += c; - } - else if (c == '"') { - escaped += '\\"'; - } - else { - escaped += c; - } - i++; - } - - return escaped; - }; - - // TODO: find a nicer solution to resolve this circular dependency between Node and AppendNode - var AppendNode = appendNodeFactory(Node); - - return Node; - }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - -/***/ }, -/* 8 */ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(9)], __WEBPACK_AMD_DEFINE_RESULT__ = function (ContextMenu) { - - /** - * Create a select box to be used in the editor menu's, which allows to switch mode - * @param {Object} editor - * @param {String[]} modes Available modes: 'code', 'form', 'text', 'tree', 'view' - * @param {String} current Available modes: 'code', 'form', 'text', 'tree', 'view' - * @returns {HTMLElement} box - */ - function createModeSwitcher(editor, modes, current) { - // TODO: decouple mode switcher from editor - - /** - * Switch the mode of the editor - * @param {String} mode - */ - function switchMode(mode) { - // switch mode - editor.setMode(mode); - - // restore focus on mode box - var modeBox = editor.dom && editor.dom.modeBox; - if (modeBox) { - modeBox.focus(); - } - } - - // available modes - var availableModes = { - code: { - 'text': 'Code', - 'title': 'Switch to code highlighter', - 'click': function () { - switchMode('code') - } - }, - form: { - 'text': 'Form', - 'title': 'Switch to form editor', - 'click': function () { - switchMode('form'); - } - }, - text: { - 'text': 'Text', - 'title': 'Switch to plain text editor', - 'click': function () { - switchMode('text'); - } - }, - tree: { - 'text': 'Tree', - 'title': 'Switch to tree editor', - 'click': function () { - switchMode('tree'); - } - }, - view: { - 'text': 'View', - 'title': 'Switch to tree view', - 'click': function () { - switchMode('view'); - } - } - }; - - // list the selected modes - var items = []; - for (var i = 0; i < modes.length; i++) { - var mode = modes[i]; - var item = availableModes[mode]; - if (!item) { - throw new Error('Unknown mode "' + mode + '"'); - } - - item.className = 'type-modes' + ((current == mode) ? ' selected' : ''); - items.push(item); - } - - // retrieve the title of current mode - var currentMode = availableModes[current]; - if (!currentMode) { - throw new Error('Unknown mode "' + current + '"'); - } - var currentTitle = currentMode.text; - - // create the html element - var box = document.createElement('button'); - box.className = 'modes separator'; - box.innerHTML = currentTitle + ' ▾'; - box.title = 'Switch editor mode'; - box.onclick = function () { - var menu = new ContextMenu(items); - menu.show(box); - }; - - return box; - } - - return { - create: createModeSwitcher - } - }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - - -/***/ }, -/* 9 */ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(3)], __WEBPACK_AMD_DEFINE_RESULT__ = function (util) { - - /** - * A context menu - * @param {Object[]} items Array containing the menu structure - * TODO: describe structure - * @param {Object} [options] Object with options. Available options: - * {function} close Callback called when the - * context menu is being closed. - * @constructor - */ - function ContextMenu (items, options) { - this.dom = {}; - - var me = this; - var dom = this.dom; - this.anchor = undefined; - this.items = items; - this.eventListeners = {}; - this.selection = undefined; // holds the selection before the menu was opened - this.visibleSubmenu = undefined; - this.onClose = options ? options.close : undefined; - - // create a container element - var menu = document.createElement('div'); - menu.className = 'jsoneditor-contextmenu'; - dom.menu = menu; - - // create a list to hold the menu items - var list = document.createElement('ul'); - list.className = 'menu'; - menu.appendChild(list); - dom.list = list; - dom.items = []; // list with all buttons - - // create a (non-visible) button to set the focus to the menu - var focusButton = document.createElement('button'); - dom.focusButton = focusButton; - var li = document.createElement('li'); - li.style.overflow = 'hidden'; - li.style.height = '0'; - li.appendChild(focusButton); - list.appendChild(li); - - function createMenuItems (list, domItems, items) { - items.forEach(function (item) { - if (item.type == 'separator') { - // create a separator - var separator = document.createElement('div'); - separator.className = 'separator'; - li = document.createElement('li'); - li.appendChild(separator); - list.appendChild(li); - } - else { - var domItem = {}; - - // create a menu item - var li = document.createElement('li'); - list.appendChild(li); - - // create a button in the menu item - var button = document.createElement('button'); - button.className = item.className; - domItem.button = button; - if (item.title) { - button.title = item.title; - } - if (item.click) { - button.onclick = function () { - me.hide(); - item.click(); - }; - } - li.appendChild(button); - - // create the contents of the button - if (item.submenu) { - // add the icon to the button - var divIcon = document.createElement('div'); - divIcon.className = 'icon'; - button.appendChild(divIcon); - button.appendChild(document.createTextNode(item.text)); - - var buttonSubmenu; - if (item.click) { - // submenu and a button with a click handler - button.className += ' default'; - - var buttonExpand = document.createElement('button'); - domItem.buttonExpand = buttonExpand; - buttonExpand.className = 'expand'; - buttonExpand.innerHTML = '

    '; - li.appendChild(buttonExpand); - if (item.submenuTitle) { - buttonExpand.title = item.submenuTitle; - } - - buttonSubmenu = buttonExpand; - } - else { - // submenu and a button without a click handler - var divExpand = document.createElement('div'); - divExpand.className = 'expand'; - button.appendChild(divExpand); - - buttonSubmenu = button; - } - - // attach a handler to expand/collapse the submenu - buttonSubmenu.onclick = function () { - me._onExpandItem(domItem); - buttonSubmenu.focus(); - }; - - // create the submenu - var domSubItems = []; - domItem.subItems = domSubItems; - var ul = document.createElement('ul'); - domItem.ul = ul; - ul.className = 'menu'; - ul.style.height = '0'; - li.appendChild(ul); - createMenuItems(ul, domSubItems, item.submenu); - } - else { - // no submenu, just a button with clickhandler - button.innerHTML = '
    ' + item.text; - } - - domItems.push(domItem); - } - }); - } - createMenuItems(list, this.dom.items, items); - - // TODO: when the editor is small, show the submenu on the right instead of inline? - - // calculate the max height of the menu with one submenu expanded - this.maxHeight = 0; // height in pixels - items.forEach(function (item) { - var height = (items.length + (item.submenu ? item.submenu.length : 0)) * 24; - me.maxHeight = Math.max(me.maxHeight, height); - }); - } - - /** - * Get the currently visible buttons - * @return {Array.} buttons - * @private - */ - ContextMenu.prototype._getVisibleButtons = function () { - var buttons = []; - var me = this; - this.dom.items.forEach(function (item) { - buttons.push(item.button); - if (item.buttonExpand) { - buttons.push(item.buttonExpand); - } - if (item.subItems && item == me.expandedItem) { - item.subItems.forEach(function (subItem) { - buttons.push(subItem.button); - if (subItem.buttonExpand) { - buttons.push(subItem.buttonExpand); - } - // TODO: change to fully recursive method - }); - } - }); - - return buttons; - }; - - // currently displayed context menu, a singleton. We may only have one visible context menu - ContextMenu.visibleMenu = undefined; - - /** - * Attach the menu to an anchor - * @param {HTMLElement} anchor - */ - ContextMenu.prototype.show = function (anchor) { - this.hide(); - - // calculate whether the menu fits below the anchor - var windowHeight = window.innerHeight, - windowScroll = (window.pageYOffset || document.scrollTop || 0), - windowBottom = windowHeight + windowScroll, - anchorHeight = anchor.offsetHeight, - menuHeight = this.maxHeight; - - // position the menu - var left = util.getAbsoluteLeft(anchor); - var top = util.getAbsoluteTop(anchor); - if (top + anchorHeight + menuHeight < windowBottom) { - // display the menu below the anchor - this.dom.menu.style.left = left + 'px'; - this.dom.menu.style.top = (top + anchorHeight) + 'px'; - this.dom.menu.style.bottom = ''; - } - else { - // display the menu above the anchor - this.dom.menu.style.left = left + 'px'; - this.dom.menu.style.top = ''; - this.dom.menu.style.bottom = (windowHeight - top) + 'px'; - } - - // attach the menu to the document - document.body.appendChild(this.dom.menu); - - // create and attach event listeners - var me = this; - var list = this.dom.list; - this.eventListeners.mousedown = util.addEventListener( - document, 'mousedown', function (event) { - // hide menu on click outside of the menu - var target = event.target; - if ((target != list) && !me._isChildOf(target, list)) { - me.hide(); - event.stopPropagation(); - event.preventDefault(); - } - }); - this.eventListeners.mousewheel = util.addEventListener( - document, 'mousewheel', function (event) { - // block scrolling when context menu is visible - event.stopPropagation(); - event.preventDefault(); - }); - this.eventListeners.keydown = util.addEventListener( - document, 'keydown', function (event) { - me._onKeyDown(event); - }); - - // move focus to the first button in the context menu - this.selection = util.getSelection(); - this.anchor = anchor; - setTimeout(function () { - me.dom.focusButton.focus(); - }, 0); - - if (ContextMenu.visibleMenu) { - ContextMenu.visibleMenu.hide(); - } - ContextMenu.visibleMenu = this; - }; - - /** - * Hide the context menu if visible - */ - ContextMenu.prototype.hide = function () { - // remove the menu from the DOM - if (this.dom.menu.parentNode) { - this.dom.menu.parentNode.removeChild(this.dom.menu); - if (this.onClose) { - this.onClose(); - } - } - - // remove all event listeners - // all event listeners are supposed to be attached to document. - for (var name in this.eventListeners) { - if (this.eventListeners.hasOwnProperty(name)) { - var fn = this.eventListeners[name]; - if (fn) { - util.removeEventListener(document, name, fn); - } - delete this.eventListeners[name]; - } - } - - if (ContextMenu.visibleMenu == this) { - ContextMenu.visibleMenu = undefined; - } - }; - - /** - * Expand a submenu - * Any currently expanded submenu will be hided. - * @param {Object} domItem - * @private - */ - ContextMenu.prototype._onExpandItem = function (domItem) { - var me = this; - var alreadyVisible = (domItem == this.expandedItem); - - // hide the currently visible submenu - var expandedItem = this.expandedItem; - if (expandedItem) { - //var ul = expandedItem.ul; - expandedItem.ul.style.height = '0'; - expandedItem.ul.style.padding = ''; - setTimeout(function () { - if (me.expandedItem != expandedItem) { - expandedItem.ul.style.display = ''; - util.removeClassName(expandedItem.ul.parentNode, 'selected'); - } - }, 300); // timeout duration must match the css transition duration - this.expandedItem = undefined; - } - - if (!alreadyVisible) { - var ul = domItem.ul; - ul.style.display = 'block'; - var height = ul.clientHeight; // force a reflow in Firefox - setTimeout(function () { - if (me.expandedItem == domItem) { - ul.style.height = (ul.childNodes.length * 24) + 'px'; - ul.style.padding = '5px 10px'; - } - }, 0); - util.addClassName(ul.parentNode, 'selected'); - this.expandedItem = domItem; - } - }; - - /** - * Handle onkeydown event - * @param {Event} event - * @private - */ - ContextMenu.prototype._onKeyDown = function (event) { - var target = event.target; - var keynum = event.which; - var handled = false; - var buttons, targetIndex, prevButton, nextButton; - - if (keynum == 27) { // ESC - // hide the menu on ESC key - - // restore previous selection and focus - if (this.selection) { - util.setSelection(this.selection); - } - if (this.anchor) { - this.anchor.focus(); - } - - this.hide(); - - handled = true; - } - else if (keynum == 9) { // Tab - if (!event.shiftKey) { // Tab - buttons = this._getVisibleButtons(); - targetIndex = buttons.indexOf(target); - if (targetIndex == buttons.length - 1) { - // move to first button - buttons[0].focus(); - handled = true; - } - } - else { // Shift+Tab - buttons = this._getVisibleButtons(); - targetIndex = buttons.indexOf(target); - if (targetIndex == 0) { - // move to last button - buttons[buttons.length - 1].focus(); - handled = true; - } - } - } - else if (keynum == 37) { // Arrow Left - if (target.className == 'expand') { - buttons = this._getVisibleButtons(); - targetIndex = buttons.indexOf(target); - prevButton = buttons[targetIndex - 1]; - if (prevButton) { - prevButton.focus(); - } - } - handled = true; - } - else if (keynum == 38) { // Arrow Up - buttons = this._getVisibleButtons(); - targetIndex = buttons.indexOf(target); - prevButton = buttons[targetIndex - 1]; - if (prevButton && prevButton.className == 'expand') { - // skip expand button - prevButton = buttons[targetIndex - 2]; - } - if (!prevButton) { - // move to last button - prevButton = buttons[buttons.length - 1]; - } - if (prevButton) { - prevButton.focus(); - } - handled = true; - } - else if (keynum == 39) { // Arrow Right - buttons = this._getVisibleButtons(); - targetIndex = buttons.indexOf(target); - nextButton = buttons[targetIndex + 1]; - if (nextButton && nextButton.className == 'expand') { - nextButton.focus(); - } - handled = true; - } - else if (keynum == 40) { // Arrow Down - buttons = this._getVisibleButtons(); - targetIndex = buttons.indexOf(target); - nextButton = buttons[targetIndex + 1]; - if (nextButton && nextButton.className == 'expand') { - // skip expand button - nextButton = buttons[targetIndex + 2]; - } - if (!nextButton) { - // move to first button - nextButton = buttons[0]; - } - if (nextButton) { - nextButton.focus(); - handled = true; - } - handled = true; - } - // TODO: arrow left and right - - if (handled) { - event.stopPropagation(); - event.preventDefault(); - } - }; - - /** - * Test if an element is a child of a parent element. - * @param {Element} child - * @param {Element} parent - * @return {boolean} isChild - */ - ContextMenu.prototype._isChildOf = function (child, parent) { - var e = child.parentNode; - while (e) { - if (e == parent) { - return true; - } - e = e.parentNode; - } - - return false; - }; - - return ContextMenu; - }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - - -/***/ }, -/* 10 */ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(9), __webpack_require__(3)], __WEBPACK_AMD_DEFINE_RESULT__ = function (ContextMenu, util) { - - /** - * A factory function to create an AppendNode, which depends on a Node - * @param {Node} Node - */ - function appendNodeFactory(Node) { - /** - * @constructor AppendNode - * @extends Node - * @param {TreeEditor} editor - * Create a new AppendNode. This is a special node which is created at the - * end of the list with childs for an object or array - */ - function AppendNode (editor) { - /** @type {TreeEditor} */ - this.editor = editor; - this.dom = {}; - } - - AppendNode.prototype = new Node(); - - /** - * Return a table row with an append button. - * @return {Element} dom TR element - */ - AppendNode.prototype.getDom = function () { - // TODO: implement a new solution for the append node - var dom = this.dom; - - if (dom.tr) { - return dom.tr; - } - - this._updateEditability(); - - // a row for the append button - var trAppend = document.createElement('tr'); - trAppend.node = this; - dom.tr = trAppend; - - // TODO: consistent naming - - if (this.editable.field) { - // a cell for the dragarea column - dom.tdDrag = document.createElement('td'); - - // create context menu - var tdMenu = document.createElement('td'); - dom.tdMenu = tdMenu; - var menu = document.createElement('button'); - menu.className = 'contextmenu'; - menu.title = 'Click to open the actions menu (Ctrl+M)'; - dom.menu = menu; - tdMenu.appendChild(dom.menu); - } - - // a cell for the contents (showing text 'empty') - var tdAppend = document.createElement('td'); - var domText = document.createElement('div'); - domText.innerHTML = '(empty)'; - domText.className = 'readonly'; - tdAppend.appendChild(domText); - dom.td = tdAppend; - dom.text = domText; - - this.updateDom(); - - return trAppend; - }; - - /** - * Update the HTML dom of the Node - */ - AppendNode.prototype.updateDom = function () { - var dom = this.dom; - var tdAppend = dom.td; - if (tdAppend) { - tdAppend.style.paddingLeft = (this.getLevel() * 24 + 26) + 'px'; - // TODO: not so nice hard coded offset - } - - var domText = dom.text; - if (domText) { - domText.innerHTML = '(empty ' + this.parent.type + ')'; - } - - // attach or detach the contents of the append node: - // hide when the parent has childs, show when the parent has no childs - var trAppend = dom.tr; - if (!this.isVisible()) { - if (dom.tr.firstChild) { - if (dom.tdDrag) { - trAppend.removeChild(dom.tdDrag); - } - if (dom.tdMenu) { - trAppend.removeChild(dom.tdMenu); - } - trAppend.removeChild(tdAppend); - } - } - else { - if (!dom.tr.firstChild) { - if (dom.tdDrag) { - trAppend.appendChild(dom.tdDrag); - } - if (dom.tdMenu) { - trAppend.appendChild(dom.tdMenu); - } - trAppend.appendChild(tdAppend); - } - } - }; - - /** - * Check whether the AppendNode is currently visible. - * the AppendNode is visible when its parent has no childs (i.e. is empty). - * @return {boolean} isVisible - */ - AppendNode.prototype.isVisible = function () { - return (this.parent.childs.length == 0); - }; - - /** - * Show a contextmenu for this node - * @param {HTMLElement} anchor The element to attach the menu to. - * @param {function} [onClose] Callback method called when the context menu - * is being closed. - */ - AppendNode.prototype.showContextMenu = function (anchor, onClose) { - var node = this; - var titles = Node.TYPE_TITLES; - var items = [ - // create append button - { - 'text': 'Append', - 'title': 'Append a new field with type \'auto\' (Ctrl+Shift+Ins)', - 'submenuTitle': 'Select the type of the field to be appended', - 'className': 'insert', - 'click': function () { - node._onAppend('', '', 'auto'); - }, - 'submenu': [ - { - 'text': 'Auto', - 'className': 'type-auto', - 'title': titles.auto, - 'click': function () { - node._onAppend('', '', 'auto'); - } - }, - { - 'text': 'Array', - 'className': 'type-array', - 'title': titles.array, - 'click': function () { - node._onAppend('', []); - } - }, - { - 'text': 'Object', - 'className': 'type-object', - 'title': titles.object, - 'click': function () { - node._onAppend('', {}); - } - }, - { - 'text': 'String', - 'className': 'type-string', - 'title': titles.string, - 'click': function () { - node._onAppend('', '', 'string'); - } - } - ] - } - ]; - - var menu = new ContextMenu(items, {close: onClose}); - menu.show(anchor); - }; - - /** - * Handle an event. The event is catched centrally by the editor - * @param {Event} event - */ - AppendNode.prototype.onEvent = function (event) { - var type = event.type; - var target = event.target || event.srcElement; - var dom = this.dom; - - // highlight the append nodes parent - var menu = dom.menu; - if (target == menu) { - if (type == 'mouseover') { - this.editor.highlighter.highlight(this.parent); - } - else if (type == 'mouseout') { - this.editor.highlighter.unhighlight(); - } - } - - // context menu events - if (type == 'click' && target == dom.menu) { - var highlighter = this.editor.highlighter; - highlighter.highlight(this.parent); - highlighter.lock(); - util.addClassName(dom.menu, 'selected'); - this.showContextMenu(dom.menu, function () { - util.removeClassName(dom.menu, 'selected'); - highlighter.unlock(); - highlighter.unhighlight(); - }); - } - - if (type == 'keydown') { - this.onKeyDown(event); - } - }; - - return AppendNode; - } - - // return the factory function - return appendNodeFactory; - }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - - -/***/ } -/******/ ]) -}); diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/jsoneditor.map b/data-mgmt/src/main/webapp/bower_components/jsoneditor/jsoneditor.map deleted file mode 100644 index c0e95fc..0000000 --- a/data-mgmt/src/main/webapp/bower_components/jsoneditor/jsoneditor.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"jsoneditor.map","sources":["./jsoneditor.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","treemode","textmode","util","JSONEditor","container","options","json","Error","ieVersion","getInternetExplorerVersion","arguments","length","_create","modes","prototype","mode","setMode","_delete","set","get","setText","jsonText","parse","getText","JSON","stringify","setName","name","getName","data","extend","config","asText","clear","mixin","create","load","err","_onError","onError","log","error","registerMode","i","prop","isArray","reserved","apply","undefined","Highlighter","History","SearchBox","Node","modeswitcher","dom","highlighter","selection","_setOptions","history","_createFrame","_createTable","frame","parentNode","removeChild","search","hasOwnProperty","focusNode","domFocus","Function","content","table","params","field","value","node","_setRoot","recurse","expand","appendChild","blur","getValue","updateField","collapse","tbody","getDom","text","results","expandAll","collapseAll","_onAction","action","add","change","startAutoScroll","mouseY","me","top","getAbsoluteTop","height","clientHeight","bottom","margin","interval","autoScrollStep","scrollTop","scrollHeight","autoScrollTimer","setInterval","stopAutoScroll","clearTimeout","setSelection","range","setSelectionOffset","focus","getSelection","getSelectionOffset","scrollTo","callback","editor","animateTimeout","animateCallback","finalScrollTop","Math","min","max","animate","diff","abs","setTimeout","onEvent","event","_onEvent","document","createElement","className","onclick","target","nodeName","preventDefault","oninput","onchange","onkeydown","onkeyup","oncut","onpaste","onmousedown","onmouseup","onmouseover","onmouseout","addEventListener","onfocusin","onfocusout","menu","title","undo","_onUndo","redo","_onRedo","onChange","disabled","canUndo","canRedo","modeBox","searchBox","type","_onKeyDown","getNodeFromTarget","keynum","which","keyCode","ctrlKey","shiftKey","handled","selectContentEditable","select","previous","next","stopPropagation","contentOuter","col","colgroupContent","width","indentation","Number","ace","textarea","clientWidth","buttonFormat","format","buttonCompact","compact","editorDom","style","edit","setTheme","setShowPrintMargin","setFontSize","getSession","setTabSize","setUseSoftTabs","setUseWrapMode","poweredBy","createTextNode","href","window","open","on","spellcheck","resize","force","setValue","jsonString","parseJS","err2","validate","jsString","chars","inString","charAt","isEscaped","push","join","replace","$0","$1","$2","$3","jsonlint","a","b","console","object","String","Boolean","RegExp","isUrlRegex","isUrl","test","obj","Object","toString","getAbsoluteLeft","elem","rect","getBoundingClientRect","left","pageXOffset","scrollLeft","pageYOffset","addClassName","classes","split","indexOf","removeClassName","index","splice","stripFormatting","divElement","childs","childNodes","iMax","child","removeAttribute","attributes","j","attribute","specified","setEndOfContentEditable","contentEditableElement","createRange","selectNodeContents","removeAllRanges","addRange","sel","getRangeAt","rangeCount","startContainer","endContainer","startOffset","endOffset","setStart","firstChild","setEnd","getInnerText","element","buffer","first","flush","nodeValue","hasChildNodes","innerText","prevChild","prevName","_ieVersion","rv","navigator","appName","ua","userAgent","re","exec","parseFloat","isFirefox","listener","useCapture","attachEvent","f","removeEventListener","detachEvent","locked","highlight","setHighlight","_cancelUnhighlight","unhighlight","unhighlightTimer","lock","unlock","actions","editField","oldValue","newValue","editValue","updateValue","appendNode","parent","insertBeforeNode","insertBefore","beforeNode","insertAfterNode","insertAfter","afterNode","removeNode","append","duplicateNode","clone","changeType","oldType","newType","moveNode","startParent","moveTo","startIndex","endParent","endIndex","sort","hideChilds","oldSort","oldChilds","showChilds","newSort","newChilds","timestamp","Date","oldSelection","newSelection","timeout","delay","lastText","tr","td","divInput","input","tableInput","tbodySearch","refreshSearch","_onDelayedSearch","_onSearch","_onKeyUp","searchNext","searchPrevious","resultIndex","_setActiveResult","activeResult","prevNode","prevElem","searchFieldActive","searchValueActive","updateDom","_clearDelay","forceSearch","resultCount","innerHTML","ContextMenu","appendNodeFactory","expanded","setField","fieldEditable","_updateEditability","editable","path","unshift","setParent","getField","_getDomField","childValue","_getType","childField","arr","forEach","_getDomValue","getLevel","fieldInnerText","valueInnerText","cloneChilds","childClone","getAppend","nextTr","nextSibling","hide","_hasChilds","newTr","appendTr","updateIndexes","moveBefore","trTemp","AppendNode","currentIndex","toLowerCase","searchField","searchValue","_updateDomField","childResults","concat","_updateDomValue","offsetTop","focusElement","elementName","drag","editableDiv","_duplicate","containsNode","_move","clearDom","removedNode","_remove","lastTr","_stringCast","silent","_unescapeHTML","str","domValue","v","t","color","isEmpty","count","domField","oldField","tdDrag","domDrag","tdMenu","tdField","tree","_createDomTree","_onDragStart","mousemove","_onDrag","mouseup","_onDragEnd","oldCursor","body","cursor","mouseX","pageX","level","trThis","trPrev","trNext","trFirst","trLast","trRoot","nodePrev","nodeNext","topThis","topPrev","topFirst","heightThis","bottomNext","heightNext","pageY","moved","offsetHeight","previousSibling","diffX","diffLevel","round","levelNext","_isChildOf","n","_createDomField","domTree","marginLeft","contentEditable","_escapeHTML","_updateDomIndexes","_createDomValue","_createDomExpandButton","borderCollapse","tdExpand","tdSeparator","tdValue","srcElement","expandable","showContextMenu","_onExpand","offsetX","onKeyDown","nextNode","nextDom","nextDom2","altKey","_onDuplicate","_onRemove","_onInsertBefore","_onInsertAfter","lastNode","_lastNode","_getElementName","firstNode","_firstNode","prevElement","_previousElement","appendDom","nextNode2","_previousNode","nextElement","_nextElement","prevDom","isVisible","_nextNode","newNode","_onAppend","_onChangeType","_onSort","direction","order","firstDom","lastDom","lastChild","TYPE_TITLES","auto","array","string","anchor","onClose","titles","items","submenu","click","submenuTitle","close","show","Array","lower","num","numFloat","isNaN","htmlEscaped","substring","escapedText","_escapeJSON","escaped","createModeSwitcher","current","switchMode","availableModes","code","form","view","item","currentMode","currentTitle","box","createMenuItems","list","domItems","separator","li","domItem","button","divIcon","buttonSubmenu","buttonExpand","divExpand","_onExpandItem","domSubItems","subItems","ul","eventListeners","visibleSubmenu","focusButton","overflow","maxHeight","_getVisibleButtons","buttons","expandedItem","subItem","visibleMenu","windowHeight","innerHeight","windowScroll","windowBottom","anchorHeight","menuHeight","mousedown","mousewheel","keydown","fn","alreadyVisible","padding","display","targetIndex","prevButton","nextButton","e","trAppend","tdAppend","domText","paddingLeft"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BA,SAA2CA,EAAMC,GAC1B,gBAAZC,UAA0C,gBAAXC,QACxCA,OAAOD,QAAUD,IACQ,kBAAXG,SAAyBA,OAAOC,IAC9CD,OAAOH,GACmB,gBAAZC,SACdA,QAAoB,WAAID,IAExBD,EAAiB,WAAIC,KACpBK,KAAM,WACT,MAAgB,UAAUC,GAKhB,QAASC,GAAoBC,GAG5B,GAAGC,EAAiBD,GACnB,MAAOC,GAAiBD,GAAUP,OAGnC,IAAIC,GAASO,EAAiBD,IAC7BP,WACAS,GAAIF,EACJG,QAAQ,EAUT,OANAL,GAAQE,GAAUI,KAAKV,EAAOD,QAASC,EAAQA,EAAOD,QAASM,GAG/DL,EAAOS,QAAS,EAGTT,EAAOD,QAvBf,GAAIQ,KAqCJ,OATAF,GAAoBM,EAAIP,EAGxBC,EAAoBO,EAAIL,EAGxBF,EAAoBQ,EAAI,GAGjBR,EAAoB,KAK/B,SAASL,EAAQD,EAASM,GAE/B,GAAIS,GAA8BC,CAAgCD,IAAgCT,EAAoB,GAAIA,EAAoB,GAAIA,EAAoB,IAAKU,EAAgC,SAAUC,EAAUC,EAAUC,GA4BvO,QAASC,GAAYC,EAAWC,EAASC,GACvC,KAAMnB,eAAgBgB,IACpB,KAAM,IAAII,OAAM,+CAIlB,IAAIC,GAAYN,EAAKO,4BACrB,IAAiB,IAAbD,GAA+B,EAAZA,EACrB,KAAM,IAAID,OAAM,iGAIdG,WAAUC,QACZxB,KAAKyB,QAAQR,EAAWC,EAASC,GA0NrC,MAvMAH,GAAWU,SASXV,EAAWW,UAAUF,QAAU,SAAUR,EAAWC,EAASC,GAC3DnB,KAAKiB,UAAYA,EACjBjB,KAAKkB,QAAUA,MACflB,KAAKmB,KAAOA,KAEZ,IAAIS,GAAO5B,KAAKkB,QAAQU,MAAQ,MAChC5B,MAAK6B,QAAQD,IAOfZ,EAAWW,UAAUG,QAAU,aAM/Bd,EAAWW,UAAUI,IAAM,SAAUZ,GACnCnB,KAAKmB,KAAOA,GAOdH,EAAWW,UAAUK,IAAM,WACzB,MAAOhC,MAAKmB,MAOdH,EAAWW,UAAUM,QAAU,SAAUC,GACvClC,KAAKmB,KAAOJ,EAAKoB,MAAMD,IAOzBlB,EAAWW,UAAUS,QAAU,WAC7B,MAAOC,MAAKC,UAAUtC,KAAKmB,OAO7BH,EAAWW,UAAUY,QAAU,SAAUC,GAClCxC,KAAKkB,UACRlB,KAAKkB,YAEPlB,KAAKkB,QAAQsB,KAAOA,GAOtBxB,EAAWW,UAAUc,QAAU,WAC7B,MAAOzC,MAAKkB,SAAWlB,KAAKkB,QAAQsB,MAStCxB,EAAWW,UAAUE,QAAU,SAAUD,GACvC,GAEIc,GACAF,EAHAvB,EAAYjB,KAAKiB,UACjBC,EAAUH,EAAK4B,UAAW3C,KAAKkB,QAInCA,GAAQU,KAAOA,CACf,IAAIgB,GAAS5B,EAAWU,MAAME,EAC9B,KAAIgB,EA0BF,KAAM,IAAIxB,OAAM,iBAAmBF,EAAQU,KAAO,IAzBlD,KACE,GAAIiB,GAAyB,QAAfD,EAAOF,IAYrB,IAXAF,EAAOxC,KAAKyC,UACZC,EAAO1C,KAAK6C,EAAS,UAAY,SAEjC7C,KAAK8B,UACLf,EAAK+B,MAAM9C,MACXe,EAAK4B,OAAO3C,KAAM4C,EAAOG,OACzB/C,KAAKgD,OAAO/B,EAAWC,GAEvBlB,KAAKuC,QAAQC,GACbxC,KAAK6C,EAAS,UAAY,OAAOH,GAEN,kBAAhBE,GAAOK,KAChB,IACEL,EAAOK,KAAK1C,KAAKP,MAEnB,MAAOkD,KAGX,MAAOA,GACLlD,KAAKmD,SAASD,KAcpBlC,EAAWW,UAAUwB,SAAW,SAASD,GAQvC,GAN4B,kBAAjBlD,MAAKoD,UACdrC,EAAKsC,IAAI,yEAETrD,KAAKoD,QAAQF,KAGXlD,KAAKkB,SAAyC,kBAAvBlB,MAAKkB,QAAQoC,MAItC,KAAMJ,EAHNlD,MAAKkB,QAAQoC,MAAMJ,IA0BvBlC,EAAWuC,aAAe,SAAU3B,GAClC,GAAI4B,GAAGC,CAEP,IAAI1C,EAAK2C,QAAQ9B,GAEf,IAAK4B,EAAI,EAAGA,EAAI5B,EAAKJ,OAAQgC,IAC3BxC,EAAWuC,aAAa3B,EAAK4B,QAG5B,CAEH,KAAM,QAAU5B,IAAO,KAAM,IAAIR,OAAM,0BACvC,MAAM,SAAWQ,IAAO,KAAM,IAAIR,OAAM,2BACxC,MAAM,QAAUQ,IAAO,KAAM,IAAIR,OAAM,0BACvC,IAAIoB,GAAOZ,EAAKA,IAChB,IAAIY,IAAQxB,GAAWU,MACrB,KAAM,IAAIN,OAAM,SAAWoB,EAAO,uBAIpC,IAAiC,kBAAtBZ,GAAKmB,MAAMC,OACpB,KAAM,IAAI5B,OAAM,8CAElB,IAAIuC,IAAY,UAAW,eAAgB,QAC3C,KAAKH,EAAI,EAAGA,EAAIG,EAASnC,OAAQgC,IAE/B,GADAC,EAAOE,EAASH,GACZC,IAAQ7B,GAAKmB,MACf,KAAM,IAAI3B,OAAM,sBAAwBqC,EAAO,yBAInDzC,GAAWU,MAAMc,GAAQZ,IAK7BZ,EAAWuC,aAAa1C,GACxBG,EAAWuC,aAAazC,GAEjBE,GACP4C,MAAMhE,EAASe,KAAiEkD,SAAlCjD,IAAgDf,EAAOD,QAAUgB,KAI5G,SAASf,EAAQD,EAASM,GAE/B,GAAIS,GAA8BC,CAAgCD,IAAgCT,EAAoB,GAAIA,EAAoB,GAAIA,EAAoB,GAAIA,EAAoB,GAAIA,EAAoB,GAAIA,EAAoB,IAAKU,EAAgC,SAAUkD,EAAaC,EAASC,EAAWC,EAAMC,EAAcnD,GAGhV,GAAIF,KAkBJA,GAASmC,OAAS,SAAU/B,EAAWC,GACrC,IAAKD,EACH,KAAM,IAAIG,OAAM,iCAElBpB,MAAKiB,UAAYA,EACjBjB,KAAKmE,OACLnE,KAAKoE,YAAc,GAAIN,GACvB9D,KAAKqE,UAAYR,OAEjB7D,KAAKsE,YAAYpD,GAEblB,KAAKkB,QAAQqD,SAAiC,SAAtBvE,KAAKkB,QAAQU,OACvC5B,KAAKuE,QAAU,GAAIR,GAAQ/D,OAG7BA,KAAKwE,eACLxE,KAAKyE,gBAOP5D,EAASiB,QAAU,WACb9B,KAAK0E,OAAS1E,KAAKiB,WAAajB,KAAK0E,MAAMC,YAAc3E,KAAKiB,WAChEjB,KAAKiB,UAAU2D,YAAY5E,KAAK0E,QASpC7D,EAASyD,YAAc,SAAUpD,GAS/B,GARAlB,KAAKkB,SACH2D,QAAQ,EACRN,SAAS,EACT3C,KAAM,OACNY,KAAMqB,QAIJ3C,EACF,IAAK,GAAIuC,KAAQvC,GACXA,EAAQ4D,eAAerB,KACzBzD,KAAKkB,QAAQuC,GAAQvC,EAAQuC,IAOrC,IAAIsB,GAAYlB,OAGZmB,EAAW,IA0mBf,OAlmBAnE,GAASkB,IAAM,SAAUZ,EAAMqB,GAU7B,GARIA,IAEFzB,EAAKsC,IAAI,8EAETrD,KAAKkB,QAAQsB,KAAOA,GAIlBrB,YAAgB8D,WAAsBpB,SAAT1C,EAC/BnB,KAAK8C,YAEF,CACH9C,KAAKkF,QAAQN,YAAY5E,KAAKmF,MAG9B,IAAIC,IACFC,MAASrF,KAAKkB,QAAQsB,KACtB8C,MAASnE,GAEPoE,EAAO,GAAItB,GAAKjE,KAAMoF,EAC1BpF,MAAKwF,SAASD,EAGd,IAAIE,IAAU,CACdzF,MAAKuF,KAAKG,OAAOD,GAEjBzF,KAAKkF,QAAQS,YAAY3F,KAAKmF,OAI5BnF,KAAKuE,SACPvE,KAAKuE,QAAQzB,SAQjBjC,EAASmB,IAAM,WAMb,MAJI+C,IACFA,EAAUa,OAGR5F,KAAKuF,KACAvF,KAAKuF,KAAKM,WAGVhC,QAQXhD,EAASuB,QAAU,WACjB,MAAOC,MAAKC,UAAUtC,KAAKgC,QAO7BnB,EAASoB,QAAU,SAASC,GAC1BlC,KAAK+B,IAAIhB,EAAKoB,MAAMD,KAOtBrB,EAAS0B,QAAU,SAAUC,GAC3BxC,KAAKkB,QAAQsB,KAAOA,EAChBxC,KAAKuF,MACPvF,KAAKuF,KAAKO,YAAY9F,KAAKkB,QAAQsB,OAQvC3B,EAAS4B,QAAU,WACjB,MAAOzC,MAAKkB,QAAQsB,MAMtB3B,EAASiC,MAAQ,WACX9C,KAAKuF,OACPvF,KAAKuF,KAAKQ,WACV/F,KAAKgG,MAAMpB,YAAY5E,KAAKuF,KAAKU,gBAC1BjG,MAAKuF,OAShB1E,EAAS2E,SAAW,SAAUD,GAC5BvF,KAAK8C,QAEL9C,KAAKuF,KAAOA,EAGZvF,KAAKgG,MAAML,YAAYJ,EAAKU,WAe9BpF,EAASgE,OAAS,SAAUqB,GAC1B,GAAIC,EAUJ,OATInG,MAAKuF,MACPvF,KAAKkF,QAAQN,YAAY5E,KAAKmF,OAC9BgB,EAAUnG,KAAKuF,KAAKV,OAAOqB,GAC3BlG,KAAKkF,QAAQS,YAAY3F,KAAKmF,QAG9BgB,KAGKA,GAMTtF,EAASuF,UAAY,WACfpG,KAAKuF,OACPvF,KAAKkF,QAAQN,YAAY5E,KAAKmF,OAC9BnF,KAAKuF,KAAKG,SACV1F,KAAKkF,QAAQS,YAAY3F,KAAKmF,SAOlCtE,EAASwF,YAAc,WACjBrG,KAAKuF,OACPvF,KAAKkF,QAAQN,YAAY5E,KAAKmF,OAC9BnF,KAAKuF,KAAKQ,WACV/F,KAAKkF,QAAQS,YAAY3F,KAAKmF,SAkBlCtE,EAASyF,UAAY,SAAUC,EAAQnB,GAOrC,GALIpF,KAAKuE,SACPvE,KAAKuE,QAAQiC,IAAID,EAAQnB,GAIvBpF,KAAKkB,QAAQuF,OACf,IACEzG,KAAKkB,QAAQuF,SAEf,MAAOvD,GACLnC,EAAKsC,IAAI,6BAA8BH,KAU7CrC,EAAS6F,gBAAkB,SAAUC,GACnC,GAAIC,GAAK5G,KACLkF,EAAUlF,KAAKkF,QACf2B,EAAM9F,EAAK+F,eAAe5B,GAC1B6B,EAAS7B,EAAQ8B,aACjBC,EAASJ,EAAME,EACfG,EAAS,GACTC,EAAW,EAGbnH,MAAKoH,eADOP,EAAMK,EAAfP,GAA0BzB,EAAQmC,UAAY,GACzBR,EAAMK,EAAUP,GAAU,EAE3CA,EAASM,EAASC,GACvBH,EAAS7B,EAAQmC,UAAYnC,EAAQoC,cACfL,EAASC,EAAUP,GAAU,EAG/B9C,OAGpB7D,KAAKoH,eACFpH,KAAKuH,kBACRvH,KAAKuH,gBAAkBC,YAAY,WAC7BZ,EAAGQ,eACLlC,EAAQmC,WAAaT,EAAGQ,eAGxBR,EAAGa,kBAEJN,IAILnH,KAAKyH,kBAOT5G,EAAS4G,eAAiB,WACpBzH,KAAKuH,kBACPG,aAAa1H,KAAKuH,uBACXvH,MAAKuH,iBAEVvH,KAAKoH,sBACApH,MAAKoH,gBAchBvG,EAAS8G,aAAe,SAAUtD,GAC3BA,IAID,aAAeA,IAAarE,KAAKkF,UAEnClF,KAAKkF,QAAQmC,UAAYhD,EAAUgD,WAEjChD,EAAUuD,OACZ7G,EAAK8G,mBAAmBxD,EAAUuD,OAEhCvD,EAAUF,KACZE,EAAUF,IAAI2D,UAYlBjH,EAASkH,aAAe,WACtB,OACE5D,IAAKa,EACLqC,UAAWrH,KAAKkF,QAAUlF,KAAKkF,QAAQmC,UAAY,EACnDO,MAAO7G,EAAKiH,uBAahBnH,EAASoH,SAAW,SAAUpB,EAAKqB,GACjC,GAAIhD,GAAUlF,KAAKkF,OACnB,IAAIA,EAAS,CACX,GAAIiD,GAASnI,IAETmI,GAAOC,iBACTV,aAAaS,EAAOC,sBACbD,GAAOC,gBAEZD,EAAOE,kBACTF,EAAOE,iBAAgB,SAChBF,GAAOE,gBAIhB,IAAItB,GAAS7B,EAAQ8B,aACjBC,EAAS/B,EAAQoC,aAAeP,EAChCuB,EAAiBC,KAAKC,IAAID,KAAKE,IAAI5B,EAAME,EAAS,EAAG,GAAIE,GAGzDyB,EAAU,WACZ,GAAIrB,GAAYnC,EAAQmC,UACpBsB,EAAQL,EAAiBjB,CACzBkB,MAAKK,IAAID,GAAQ,GACnBzD,EAAQmC,WAAasB,EAAO,EAC5BR,EAAOE,gBAAkBH,EACzBC,EAAOC,eAAiBS,WAAWH,EAAS,MAIxCR,GACFA,GAAS,GAEXhD,EAAQmC,UAAYiB,QACbH,GAAOC,qBACPD,GAAOE,iBAGlBK,SAGIR,IACFA,GAAS,IASfrH,EAAS2D,aAAe,WAQtB,QAASsE,GAAQC,GACfZ,EAAOa,SAASD,GAPlB/I,KAAK0E,MAAQuE,SAASC,cAAc,OACpClJ,KAAK0E,MAAMyE,UAAY,aACvBnJ,KAAKiB,UAAU0E,YAAY3F,KAAK0E,MAGhC,IAAIyD,GAASnI,IAIbA,MAAK0E,MAAM0E,QAAU,SAAUL,GAC7B,GAAIM,GAASN,EAAMM,MAEnBP,GAAQC,GAIe,UAAnBM,EAAOC,UACTP,EAAMQ,kBAGVvJ,KAAK0E,MAAM8E,QAAUV,EACrB9I,KAAK0E,MAAM+E,SAAWX,EACtB9I,KAAK0E,MAAMgF,UAAYZ,EACvB9I,KAAK0E,MAAMiF,QAAUb,EACrB9I,KAAK0E,MAAMkF,MAAQd,EACnB9I,KAAK0E,MAAMmF,QAAUf,EACrB9I,KAAK0E,MAAMoF,YAAchB,EACzB9I,KAAK0E,MAAMqF,UAAYjB,EACvB9I,KAAK0E,MAAMsF,YAAclB,EACzB9I,KAAK0E,MAAMuF,WAAanB,EAIxB/H,EAAKmJ,iBAAiBlK,KAAK0E,MAAO,QAASoE,GAAS,GACpD/H,EAAKmJ,iBAAiBlK,KAAK0E,MAAO,OAAQoE,GAAS,GACnD9I,KAAK0E,MAAMyF,UAAYrB,EACvB9I,KAAK0E,MAAM0F,WAAatB,EAGxB9I,KAAKqK,KAAOpB,SAASC,cAAc,OACnClJ,KAAKqK,KAAKlB,UAAY,OACtBnJ,KAAK0E,MAAMiB,YAAY3F,KAAKqK,KAG5B,IAAIjE,GAAY6C,SAASC,cAAc,SACvC9C,GAAU+C,UAAY,aACtB/C,EAAUkE,MAAQ,oBAClBlE,EAAUgD,QAAU,WAClBjB,EAAO/B,aAETpG,KAAKqK,KAAK1E,YAAYS,EAGtB,IAAIC,GAAc4C,SAASC,cAAc,SASzC,IARA7C,EAAYiE,MAAQ,sBACpBjE,EAAY8C,UAAY,eACxB9C,EAAY+C,QAAU,WACpBjB,EAAO9B,eAETrG,KAAKqK,KAAK1E,YAAYU,GAGlBrG,KAAKuE,QAAS,CAEhB,GAAIgG,GAAOtB,SAASC,cAAc,SAClCqB,GAAKpB,UAAY,iBACjBoB,EAAKD,MAAQ,4BACbC,EAAKnB,QAAU,WACbjB,EAAOqC,WAETxK,KAAKqK,KAAK1E,YAAY4E,GACtBvK,KAAKmE,IAAIoG,KAAOA,CAGhB,IAAIE,GAAOxB,SAASC,cAAc,SAClCuB,GAAKtB,UAAY,OACjBsB,EAAKH,MAAQ,sBACbG,EAAKrB,QAAU,WACbjB,EAAOuC,WAET1K,KAAKqK,KAAK1E,YAAY8E,GACtBzK,KAAKmE,IAAIsG,KAAOA,EAGhBzK,KAAKuE,QAAQoG,SAAW,WACtBJ,EAAKK,UAAYzC,EAAO5D,QAAQsG,UAChCJ,EAAKG,UAAYzC,EAAO5D,QAAQuG,WAElC9K,KAAKuE,QAAQoG,WAIf,GAAI3K,KAAKkB,SAAWlB,KAAKkB,QAAQQ,OAAS1B,KAAKkB,QAAQQ,MAAMF,OAAQ,CACnE,GAAIuJ,GAAU7G,EAAalB,OAAOhD,KAAMA,KAAKkB,QAAQQ,MAAO1B,KAAKkB,QAAQU,KACzE5B,MAAKqK,KAAK1E,YAAYoF,GACtB/K,KAAKmE,IAAI4G,QAAUA,EAIjB/K,KAAKkB,QAAQ2D,SACf7E,KAAKgL,UAAY,GAAIhH,GAAUhE,KAAMA,KAAKqK,QAQ9CxJ,EAAS2J,QAAU,WACbxK,KAAKuE,UAEPvE,KAAKuE,QAAQgG,OAGTvK,KAAKkB,QAAQuF,QACfzG,KAAKkB,QAAQuF,WASnB5F,EAAS6J,QAAU,WACb1K,KAAKuE,UAEPvE,KAAKuE,QAAQkG,OAGTzK,KAAKkB,QAAQuF,QACfzG,KAAKkB,QAAQuF,WAUnB5F,EAASmI,SAAW,SAAUD,GAC5B,GAAIM,GAASN,EAAMM,MAED,YAAdN,EAAMkC,MACRjL,KAAKkL,WAAWnC,GAGA,SAAdA,EAAMkC,OACRjG,EAAWqE,EAGb,IAAI9D,GAAOtB,EAAKkH,kBAAkB9B,EAC9B9D,IACFA,EAAKuD,QAAQC,IASjBlI,EAASqK,WAAa,SAAUnC,GAC9B,GAAIqC,GAASrC,EAAMsC,OAAStC,EAAMuC,QAC9BC,EAAUxC,EAAMwC,QAChBC,EAAWzC,EAAMyC,SACjBC,GAAU,CASd,IAPc,GAAVL,GACFvC,WAAW,WAET9H,EAAK2K,sBAAsB1G,IAC1B,GAGDhF,KAAKgL,UACP,GAAIO,GAAqB,IAAVH,EACbpL,KAAKgL,UAAU7G,IAAIU,OAAOiD,QAC1B9H,KAAKgL,UAAU7G,IAAIU,OAAO8G,SAC1BF,GAAU,MAEP,IAAc,KAAVL,GAAkBG,GAAqB,IAAVH,EAAe,CACnD,GAAItD,IAAQ,CACP0D,GAMHxL,KAAKgL,UAAUY,SAAS9D,GAJxB9H,KAAKgL,UAAUa,KAAK/D,GAOtB2D,GAAU,EAIVzL,KAAKuE,UACHgH,IAAYC,GAAsB,IAAVJ,GAE1BpL,KAAKwK,UACLiB,GAAU,GAEHF,GAAWC,GAAsB,IAAVJ,IAE9BpL,KAAK0K,UACLe,GAAU,IAIVA,IACF1C,EAAMQ,iBACNR,EAAM+C,oBAQVjL,EAAS4D,aAAe,WACtB,GAAIsH,GAAe9C,SAASC,cAAc,MAC1C6C,GAAa5C,UAAY,QACzBnJ,KAAK+L,aAAeA,EAEpB/L,KAAKkF,QAAU+D,SAASC,cAAc,OACtClJ,KAAKkF,QAAQiE,UAAY,OACzB4C,EAAapG,YAAY3F,KAAKkF,SAE9BlF,KAAKmF,MAAQ8D,SAASC,cAAc,SACpClJ,KAAKmF,MAAMgE,UAAY,OACvBnJ,KAAKkF,QAAQS,YAAY3F,KAAKmF,MAI9B,IAAI6G,EACJhM,MAAKiM,gBAAkBhD,SAASC,cAAc,YACpB,SAAtBlJ,KAAKkB,QAAQU,OACfoK,EAAM/C,SAASC,cAAc,OAC7B8C,EAAIE,MAAQ,OACZlM,KAAKiM,gBAAgBtG,YAAYqG,IAEnCA,EAAM/C,SAASC,cAAc,OAC7B8C,EAAIE,MAAQ,OACZlM,KAAKiM,gBAAgBtG,YAAYqG,GACjCA,EAAM/C,SAASC,cAAc,OAC7BlJ,KAAKiM,gBAAgBtG,YAAYqG,GACjChM,KAAKmF,MAAMQ,YAAY3F,KAAKiM,iBAE5BjM,KAAKgG,MAAQiD,SAASC,cAAc,SACpClJ,KAAKmF,MAAMQ,YAAY3F,KAAKgG,OAE5BhG,KAAK0E,MAAMiB,YAAYoG,MAMrBnK,KAAM,OACNmB,MAAOlC,EACP6B,KAAM,SAGNd,KAAM,OACNmB,MAAOlC,EACP6B,KAAM,SAGNd,KAAM,OACNmB,MAAOlC,EACP6B,KAAM,UAGVkB,MAAMhE,EAASe,KAAiEkD,SAAlCjD,IAAgDf,EAAOD,QAAUgB,KAK5G,SAASf,EAAQD,EAASM,GAE/B,GAAIS,GAA8BC,CAAgCD,IAAgCT,EAAoB,GAAIA,EAAoB,IAAKU,EAAgC,SAAUsD,EAAcnD,GAGzM,GAAID,KAgRJ,OAjQAA,GAASkC,OAAS,SAAU/B,EAAWC,GAErCA,EAAUA,MACVlB,KAAKkB,QAAUA,EAEblB,KAAKmM,YADHjL,EAAQiL,YACSC,OAAOlL,EAAQiL,aAGf,EAErBnM,KAAK4B,KAAwB,QAAhBV,EAAQU,KAAkB,OAAS,OAC/B,QAAb5B,KAAK4B,MAEY,mBAARyK,OACTrM,KAAK4B,KAAO,OACZb,EAAKsC,IAAI,+FAKb,IAAIuD,GAAK5G,IACTA,MAAKiB,UAAYA,EACjBjB,KAAKmE,OACLnE,KAAKmI,OAAStE,OACd7D,KAAKsM,SAAWzI,OAEhB7D,KAAKkM,MAAQjL,EAAUsL,YACvBvM,KAAK+G,OAAS9F,EAAU+F,aAExBhH,KAAK0E,MAAQuE,SAASC,cAAc,OACpClJ,KAAK0E,MAAMyE,UAAY,aACvBnJ,KAAK0E,MAAM0E,QAAU,SAAUL,GAE7BA,EAAMQ,kBAIRvJ,KAAKqK,KAAOpB,SAASC,cAAc,OACnClJ,KAAKqK,KAAKlB,UAAY,OACtBnJ,KAAK0E,MAAMiB,YAAY3F,KAAKqK,KAG5B,IAAImC,GAAevD,SAASC,cAAc,SAC1CsD,GAAarD,UAAY,SACzBqD,EAAalC,MAAQ,2DACrBtK,KAAKqK,KAAK1E,YAAY6G,GACtBA,EAAapD,QAAU,WACrB,IACExC,EAAG6F,SAEL,MAAOvJ,GACL0D,EAAGzD,SAASD,IAKhB,IAAIwJ,GAAgBzD,SAASC,cAAc,SAc3C,IAbAwD,EAAcvD,UAAY,UAC1BuD,EAAcpC,MAAQ,4CACtBtK,KAAKqK,KAAK1E,YAAY+G,GACtBA,EAActD,QAAU,WACtB,IACExC,EAAG+F,UAEL,MAAOzJ,GACL0D,EAAGzD,SAASD,KAKZlD,KAAKkB,SAAWlB,KAAKkB,QAAQQ,OAAS1B,KAAKkB,QAAQQ,MAAMF,OAAQ,CACnE,GAAIuJ,GAAU7G,EAAalB,OAAOhD,KAAMA,KAAKkB,QAAQQ,MAAO1B,KAAKkB,QAAQU,KACzE5B,MAAKqK,KAAK1E,YAAYoF,GACtB/K,KAAKmE,IAAI4G,QAAUA,EASrB,GANA/K,KAAKkF,QAAU+D,SAASC,cAAc,OACtClJ,KAAKkF,QAAQiE,UAAY,QACzBnJ,KAAK0E,MAAMiB,YAAY3F,KAAKkF,SAE5BlF,KAAKiB,UAAU0E,YAAY3F,KAAK0E,OAEf,QAAb1E,KAAK4B,KAAgB,CACvB5B,KAAK4M,UAAY3D,SAASC,cAAc,OACxClJ,KAAK4M,UAAUC,MAAM9F,OAAS,OAC9B/G,KAAK4M,UAAUC,MAAMX,MAAQ,OAC7BlM,KAAKkF,QAAQS,YAAY3F,KAAK4M,UAE9B,IAAIzE,GAASkE,IAAIS,KAAK9M,KAAK4M,UAC3BzE,GAAO4E,SAAS,wBAChB5E,EAAO6E,oBAAmB,GAC1B7E,EAAO8E,YAAY,IACnB9E,EAAO+E,aAAarL,QAAQ,iBAC5BsG,EAAO+E,aAAaC,WAAW,GAC/BhF,EAAO+E,aAAaE,gBAAe,GACnCjF,EAAO+E,aAAaG,gBAAe,GACnCrN,KAAKmI,OAASA,CAEd,IAAImF,GAAYrE,SAASC,cAAc,IACvCoE,GAAU3H,YAAYsD,SAASsE,eAAe,mBAC9CD,EAAUE,KAAO,sBACjBF,EAAUjE,OAAS,SACnBiE,EAAUnE,UAAY,YACtBmE,EAAUlE,QAAU,WAIlBqE,OAAOC,KAAKJ,EAAUE,KAAMF,EAAUjE,SAExCrJ,KAAKqK,KAAK1E,YAAY2H,GAElBpM,EAAQuF,QAEV0B,EAAOwF,GAAG,SAAU,WAClBzM,EAAQuF,eAIT,CAEH,GAAI6F,GAAWrD,SAASC,cAAc,WACtCoD,GAASnD,UAAY,OACrBmD,EAASsB,YAAa,EACtB5N,KAAKkF,QAAQS,YAAY2G,GACzBtM,KAAKsM,SAAWA,EAEZpL,EAAQuF,SAEoB,OAA1BzG,KAAKsM,SAAS9C,QAChBxJ,KAAKsM,SAAS9C,QAAU,WACtBtI,EAAQuF,UAKVzG,KAAKsM,SAAS7C,SAAW,WACvBvI,EAAQuF,aAWlB3F,EAASgB,QAAU,WACb9B,KAAK0E,OAAS1E,KAAKiB,WAAajB,KAAK0E,MAAMC,YAAc3E,KAAKiB,WAChEjB,KAAKiB,UAAU2D,YAAY5E,KAAK0E,QAUpC5D,EAASqC,SAAW,SAASD,GAQ3B,GAN4B,kBAAjBlD,MAAKoD,UACdrC,EAAKsC,IAAI,yEAETrD,KAAKoD,QAAQF,KAGXlD,KAAKkB,SAAyC,kBAAvBlB,MAAKkB,QAAQoC,MAItC,KAAMJ,EAHNlD,MAAKkB,QAAQoC,MAAMJ,IAUvBpC,EAAS6L,QAAU,WACjB,GAAIxL,GAAOJ,EAAKoB,MAAMnC,KAAKoC,UAC3BpC,MAAKiC,QAAQI,KAAKC,UAAUnB,KAM9BL,EAAS2L,OAAS,WAChB,GAAItL,GAAOJ,EAAKoB,MAAMnC,KAAKoC,UAC3BpC,MAAKiC,QAAQI,KAAKC,UAAUnB,EAAM,KAAMnB,KAAKmM,eAM/CrL,EAASgH,MAAQ,WACX9H,KAAKsM,UACPtM,KAAKsM,SAASxE,QAEZ9H,KAAKmI,QACPnI,KAAKmI,OAAOL,SAOhBhH,EAAS+M,OAAS,WAChB,GAAI7N,KAAKmI,OAAQ,CACf,GAAI2F,IAAQ,CACZ9N,MAAKmI,OAAO0F,OAAOC,KAQvBhN,EAASiB,IAAM,SAASZ,GACtBnB,KAAKiC,QAAQI,KAAKC,UAAUnB,EAAM,KAAMnB,KAAKmM,eAO/CrL,EAASkB,IAAM,WACb,MAAOjB,GAAKoB,MAAMnC,KAAKoC,YAOzBtB,EAASsB,QAAU,WACjB,MAAIpC,MAAKsM,SACAtM,KAAKsM,SAAShH,MAEnBtF,KAAKmI,OACAnI,KAAKmI,OAAOtC,WAEd,IAOT/E,EAASmB,QAAU,SAASC,GACtBlC,KAAKsM,WACPtM,KAAKsM,SAAShH,MAAQpD,GAEpBlC,KAAKmI,QACPnI,KAAKmI,OAAO4F,SAAS7L,EAAU,OAO/BN,KAAM,OACNmB,MAAOjC,EACP4B,KAAM,OACNO,KAAMnC,EAAS2L,SAGf7K,KAAM,OACNmB,MAAOjC,EACP4B,KAAM,OACNO,KAAMnC,EAAS2L,UAGnB7I,MAAMhE,EAASe,KAAiEkD,SAAlCjD,IAAgDf,EAAOD,QAAUgB,KAK5G,SAASf,EAAQD,EAASM,GAE/B,GAAIU,EAAgCA,GAAgC,WAGlE,GAAIG,KAQJA,GAAKoB,MAAQ,SAAe6L,GAC1B,IACE,MAAO3L,MAAKF,MAAM6L,GAEpB,MAAO9K,GAEL,IACE,MAAOnC,GAAKkN,QAAQD,GAEtB,MAAME,GAOJ,KAHAnN,GAAKoN,SAASH,GAGR9K,KAYZnC,EAAKkN,QAAU,SAAUG,GAKvB,IAHA,GAAIC,MACAC,GAAW,EACX9K,EAAI,EACFA,EAAI4K,EAAS5M,QAAQ,CACzB,GAAIf,GAAI2N,EAASG,OAAO/K,GACpBgL,EAAuC,OAA3BJ,EAASG,OAAO/K,EAAI,EAEzB,OAAN/C,GAAmB,MAANA,GAAgB+N,IAC5B/N,IAAM6N,EAERA,GAAW,EAEHA,EAMRD,EAAMI,KAAK,MAJXH,EAAW7N,GAQf4N,EAAMI,KAAKhO,GACX+C,IAEF,GAAIwK,GAAaK,EAAMK,KAAK,GAc5B,OATAV,GAAaA,EAAWW,QAAQ,SAAU,SAAUC,EAAIC,GACtD,MAAc,MAANA,EAAc,IAAOA,EAAK,MAIpCb,EAAaA,EAAWW,QAAQ,2CAA4C,SAAUC,EAAIC,EAAIC,EAAIC,GAChG,MAAOF,GAAK,IAAMC,EAAK,IAAMC,IAGxB1M,KAAKF,MAAM6L,IAUpBjN,EAAKoN,SAAW,SAAkBH,GACR,mBAAd,UACRgB,SAAS7M,MAAM6L,GAGf3L,KAAKF,MAAM6L,IAUfjN,EAAK4B,OAAS,SAAgBsM,EAAGC,GAC/B,IAAK,GAAIzL,KAAQyL,GACXA,EAAEpK,eAAerB,KACnBwL,EAAExL,GAAQyL,EAAEzL,GAGhB,OAAOwL,IAQTlO,EAAK+B,MAAQ,SAAgBmM,GAC3B,IAAK,GAAIxL,KAAQwL,GACXA,EAAEnK,eAAerB,UACZwL,GAAExL,EAGb,OAAOwL,IAOTlO,EAAKsC,IAAM,WACc,mBAAZ8L,UAAkD,kBAAhBA,SAAQ9L,KACnD8L,QAAQ9L,IAAIO,MAAMuL,QAAS5N,YAS/BR,EAAKkK,KAAO,SAAemE,GACzB,MAAe,QAAXA,EACK,OAEMvL,SAAXuL,EACK,YAEJA,YAAkBhD,SAA8B,gBAAXgD,GACjC,SAEJA,YAAkBC,SAA8B,gBAAXD,GACjC,SAEJA,YAAkBE,UAA+B,iBAAXF,GAClC,UAEJA,YAAkBG,SAA8B,gBAAXH,GACjC,SAELrO,EAAK2C,QAAQ0L,GACR,QAGF,SAQT,IAAII,GAAa,kBACjBzO,GAAK0O,MAAQ,SAAgBvJ,GAC3B,OAAuB,gBAARA,IAAoBA,YAAgBmJ,UAC/CG,EAAWE,KAAKxJ,IAQtBnF,EAAK2C,QAAU,SAAUiM,GACvB,MAA+C,mBAAxCC,OAAOjO,UAAUkO,SAAStP,KAAKoP,IASxC5O,EAAK+O,gBAAkB,SAAyBC,GAC9C,GAAIC,GAAOD,EAAKE,uBAChB,OAAOD,GAAKE,KAAOzC,OAAO0C,aAAelH,SAASmH,YAAc,GASlErP,EAAK+F,eAAiB,SAAwBiJ,GAC5C,GAAIC,GAAOD,EAAKE,uBAChB,OAAOD,GAAKnJ,IAAM4G,OAAO4C,aAAepH,SAAS5B,WAAa,GAQhEtG,EAAKuP,aAAe,SAAsBP,EAAM5G,GAC9C,GAAIoH,GAAUR,EAAK5G,UAAUqH,MAAM,IACD,KAA9BD,EAAQE,QAAQtH,KAClBoH,EAAQ9B,KAAKtF,GACb4G,EAAK5G,UAAYoH,EAAQ7B,KAAK,OASlC3N,EAAK2P,gBAAkB,SAAyBX,EAAM5G,GACpD,GAAIoH,GAAUR,EAAK5G,UAAUqH,MAAM,KAC/BG,EAAQJ,EAAQE,QAAQtH,EACf,KAATwH,IACFJ,EAAQK,OAAOD,EAAO,GACtBZ,EAAK5G,UAAYoH,EAAQ7B,KAAK,OASlC3N,EAAK8P,gBAAkB,SAAyBC,GAE9C,IAAK,GADDC,GAASD,EAAWE,WACfxN,EAAI,EAAGyN,EAAOF,EAAOvP,OAAYyP,EAAJzN,EAAUA,IAAK,CACnD,GAAI0N,GAAQH,EAAOvN,EAGf0N,GAAMrE,OAERqE,EAAMC,gBAAgB,QAIxB,IAAIC,GAAaF,EAAME,UACvB,IAAIA,EACF,IAAK,GAAIC,GAAID,EAAW5P,OAAS,EAAG6P,GAAK,EAAGA,IAAK,CAC/C,GAAIC,GAAYF,EAAWC,EACA,IAAvBC,EAAUC,WACZL,EAAMC,gBAAgBG,EAAU9O,MAMtCzB,EAAK8P,gBAAgBK,KAWzBnQ,EAAKyQ,wBAA0B,SAAiCC,GAC9D,GAAI7J,GAAOvD,CACR4E,UAASyI,cACV9J,EAAQqB,SAASyI,cACjB9J,EAAM+J,mBAAmBF,GACzB7J,EAAM7B,UAAS,GACf1B,EAAYoJ,OAAO1F,eACnB1D,EAAUuN,kBACVvN,EAAUwN,SAASjK,KASvB7G,EAAK2K,sBAAwB,SAA+B+F,GAC1D,GAAKA,GAA6D,OAAnCA,EAAuBnI,SAAtD,CAIA,GAAIwI,GAAKlK,CACL6F,QAAO1F,cAAgBkB,SAASyI,cAClC9J,EAAQqB,SAASyI,cACjB9J,EAAM+J,mBAAmBF,GACzBK,EAAMrE,OAAO1F,eACb+J,EAAIF,kBACJE,EAAID,SAASjK,MASjB7G,EAAKgH,aAAe,WAClB,GAAI0F,OAAO1F,aAAc,CACvB,GAAI+J,GAAMrE,OAAO1F,cACjB,IAAI+J,EAAIC,YAAcD,EAAIE,WACxB,MAAOF,GAAIC,WAAW,GAG1B,MAAO,OAQThR,EAAK4G,aAAe,SAAsBC,GACxC,GAAIA,GACE6F,OAAO1F,aAAc,CACvB,GAAI+J,GAAMrE,OAAO1F,cACjB+J,GAAIF,kBACJE,EAAID,SAASjK,KAcnB7G,EAAKiH,mBAAqB,WACxB,GAAIJ,GAAQ7G,EAAKgH,cAEjB,OAAIH,IAAS,eAAiBA,IAAS,aAAeA,IAClDA,EAAMqK,gBAAmBrK,EAAMqK,gBAAkBrK,EAAMsK,cAEvDC,YAAavK,EAAMuK,YACnBC,UAAWxK,EAAMwK,UACjBnR,UAAW2G,EAAMqK,eAAetN,YAI7B,MAUT5D,EAAK8G,mBAAqB,SAA4BzC,GACpD,GAAI6D,SAASyI,aAAejE,OAAO1F,aAAc,CAC/C,GAAI1D,GAAYoJ,OAAO1F,cACvB,IAAG1D,EAAW,CACZ,GAAIuD,GAAQqB,SAASyI,aAGrB9J,GAAMyK,SAASjN,EAAOnE,UAAUqR,WAAYlN,EAAO+M,aACnDvK,EAAM2K,OAAOnN,EAAOnE,UAAUqR,WAAYlN,EAAOgN,WAEjDrR,EAAK4G,aAAaC,MAWxB7G,EAAKyR,aAAe,SAAsBC,EAASC,GACjD,GAAIC,GAAmB9O,QAAV6O,CAgBb,IAfIC,IACFD,GACExM,KAAQ,GACR0M,MAAS,WACP,GAAI1M,GAAOlG,KAAKkG,IAEhB,OADAlG,MAAKkG,KAAO,GACLA,GAETnE,IAAO,SAAUmE,GACflG,KAAKkG,KAAOA,KAMduM,EAAQI,UACV,MAAOH,GAAOE,QAAUH,EAAQI,SAIlC,IAAIJ,EAAQK,gBAAiB,CAI3B,IAAK,GAHD9B,GAAayB,EAAQzB,WACrB+B,EAAY,GAEPvP,EAAI,EAAGyN,EAAOD,EAAWxP,OAAYyP,EAAJzN,EAAUA,IAAK,CACvD,GAAI0N,GAAQF,EAAWxN,EAEvB,IAAsB,OAAlB0N,EAAM5H,UAAuC,KAAlB4H,EAAM5H,SAAiB,CACpD,GAAI0J,GAAYhC,EAAWxN,EAAI,GAC3ByP,EAAWD,EAAYA,EAAU1J,SAAWzF,MAC5CoP,IAAwB,OAAZA,GAAiC,KAAZA,GAA+B,MAAZA,IACtDF,GAAa,KACbL,EAAOE,SAETG,GAAahS,EAAKyR,aAAatB,EAAOwB,GACtCA,EAAO3Q,IAAI,UAEc,MAAlBmP,EAAM5H,UACbyJ,GAAaL,EAAOE,QACpBF,EAAO3Q,IAAI,OAGXgR,GAAahS,EAAKyR,aAAatB,EAAOwB,GAI1C,MAAOK,GAGP,MAAwB,KAApBN,EAAQnJ,UAAwD,IAArCvI,EAAKO,6BAM3BoR,EAAOE,QAKX,IAST7R,EAAKO,2BAA6B,WAChC,GAAkB,IAAd4R,EAAkB,CACpB,GAAIC,GAAK,EACT,IAAyB,+BAArBC,UAAUC,QACd,CACE,GAAIC,GAAKF,UAAUG,UACfC,EAAM,GAAIjE,QAAO,6BACF,OAAfiE,EAAGC,KAAKH,KACVH,EAAKO,WAAYnE,OAAOV,KAI5BqE,EAAaC,EAGf,MAAOD,IAOTnS,EAAK4S,UAAY,WACf,MAAkD,IAA1CP,UAAUG,UAAU9C,QAAQ,WAQtC,IAAIyC,GAAa,EAuDjB,OA5CAnS,GAAKmJ,iBAAmB,SAA0BuI,EAASlM,EAAQqN,EAAUC,GAC3E,GAAIpB,EAAQvI,iBASV,MARmBrG,UAAfgQ,IACFA,GAAa,GAEA,eAAXtN,GAA2BxF,EAAK4S,cAClCpN,EAAS,kBAGXkM,EAAQvI,iBAAiB3D,EAAQqN,EAAUC,GACpCD,CACF,IAAInB,EAAQqB,YAAa,CAE9B,GAAIC,GAAI,WACN,MAAOH,GAASrT,KAAKkS,EAAShF,OAAO1E,OAGvC,OADA0J,GAAQqB,YAAY,KAAOvN,EAAQwN,GAC5BA,IAWXhT,EAAKiT,oBAAsB,SAA6BvB,EAASlM,EAAQqN,EAAUC,GAC7EpB,EAAQuB,qBACSnQ,SAAfgQ,IACFA,GAAa,GAEA,eAAXtN,GAA2BxF,EAAK4S,cAClCpN,EAAS,kBAGXkM,EAAQuB,oBAAoBzN,EAAQqN,EAAUC,IACrCpB,EAAQwB,aAEjBxB,EAAQwB,YAAY,KAAO1N,EAAQqN,IAIhC7S,GACPR,KAAKX,EAASM,EAAqBN,EAASC,KAA2CgE,SAAlCjD,IAAgDf,EAAOD,QAAUgB,KAInH,SAASf,EAAQD,EAASM,GAE/B,GAAIU,EAAgCA,GAAgC,WAOlE,QAASkD,KACP9D,KAAKkU,QAAS,EA6EhB,MAtEApQ,GAAYnC,UAAUwS,UAAY,SAAU5O,GACtCvF,KAAKkU,SAILlU,KAAKuF,MAAQA,IAEXvF,KAAKuF,MACPvF,KAAKuF,KAAK6O,cAAa,GAIzBpU,KAAKuF,KAAOA,EACZvF,KAAKuF,KAAK6O,cAAa,IAIzBpU,KAAKqU,uBAOPvQ,EAAYnC,UAAU2S,YAAc,WAClC,IAAItU,KAAKkU,OAAT,CAIA,GAAItN,GAAK5G,IACLA,MAAKuF,OACPvF,KAAKqU,qBAKLrU,KAAKuU,iBAAmB1L,WAAW,WACjCjC,EAAGrB,KAAK6O,cAAa,GACrBxN,EAAGrB,KAAO1B,OACV+C,EAAG2N,iBAAmB1Q,QACrB,MAQPC,EAAYnC,UAAU0S,mBAAqB,WACrCrU,KAAKuU,mBACP7M,aAAa1H,KAAKuU,kBAClBvU,KAAKuU,iBAAmB1Q,SAQ5BC,EAAYnC,UAAU6S,KAAO,WAC3BxU,KAAKkU,QAAS,GAMhBpQ,EAAYnC,UAAU8S,OAAS,WAC7BzU,KAAKkU,QAAS,GAGTpQ,GACPvD,KAAKX,EAASM,EAAqBN,EAASC,KAA2CgE,SAAlCjD,IAAgDf,EAAOD,QAAUgB,KAInH,SAASf,EAAQD,EAASM,GAE/B,GAAIS,GAA8BC,CAAgCD,IAAgCT,EAAoB,IAAKU,EAAgC,SAAUG,GAOnK,QAASgD,GAASoE,GAChBnI,KAAKmI,OAASA,EACdnI,KAAK8C,QAGL9C,KAAK0U,SACHC,WACEpK,KAAQ,SAAUnF,GAChBA,EAAOG,KAAKO,YAAYV,EAAOwP,WAEjCnK,KAAQ,SAAUrF,GAChBA,EAAOG,KAAKO,YAAYV,EAAOyP,YAGnCC,WACEvK,KAAQ,SAAUnF,GAChBA,EAAOG,KAAKwP,YAAY3P,EAAOwP,WAEjCnK,KAAQ,SAAUrF,GAChBA,EAAOG,KAAKwP,YAAY3P,EAAOyP,YAGnCG,YACEzK,KAAQ,SAAUnF,GAChBA,EAAO6P,OAAOrQ,YAAYQ,EAAOG,OAEnCkF,KAAQ,SAAUrF,GAChBA,EAAO6P,OAAOtP,YAAYP,EAAOG,QAGrC2P,kBACE3K,KAAQ,SAAUnF,GAChBA,EAAO6P,OAAOrQ,YAAYQ,EAAOG,OAEnCkF,KAAQ,SAAUrF,GAChBA,EAAO6P,OAAOE,aAAa/P,EAAOG,KAAMH,EAAOgQ,cAGnDC,iBACE9K,KAAQ,SAAUnF,GAChBA,EAAO6P,OAAOrQ,YAAYQ,EAAOG,OAEnCkF,KAAQ,SAAUrF,GAChBA,EAAO6P,OAAOK,YAAYlQ,EAAOG,KAAMH,EAAOmQ,aAGlDC,YACEjL,KAAQ,SAAUnF,GAChB,GAAI6P,GAAS7P,EAAO6P,OAChBG,EAAaH,EAAOlE,OAAO3L,EAAOuL,QAAUsE,EAAOQ,MACvDR,GAAOE,aAAa/P,EAAOG,KAAM6P,IAEnC3K,KAAQ,SAAUrF,GAChBA,EAAO6P,OAAOrQ,YAAYQ,EAAOG,QAGrCmQ,eACEnL,KAAQ,SAAUnF,GAChBA,EAAO6P,OAAOrQ,YAAYQ,EAAOuQ,QAEnClL,KAAQ,SAAUrF,GAChBA,EAAO6P,OAAOK,YAAYlQ,EAAOuQ,MAAOvQ,EAAOG,QAGnDqQ,YACErL,KAAQ,SAAUnF,GAChBA,EAAOG,KAAKqQ,WAAWxQ,EAAOyQ,UAEhCpL,KAAQ,SAAUrF,GAChBA,EAAOG,KAAKqQ,WAAWxQ,EAAO0Q,WAGlCC,UACExL,KAAQ,SAAUnF,GAChBA,EAAO4Q,YAAYC,OAAO7Q,EAAOG,KAAMH,EAAO8Q,aAEhDzL,KAAQ,SAAUrF,GAChBA,EAAO+Q,UAAUF,OAAO7Q,EAAOG,KAAMH,EAAOgR,YAGhDC,MACE9L,KAAQ,SAAUnF,GAChB,GAAIG,GAAOH,EAAOG,IAClBA,GAAK+Q,aACL/Q,EAAK8Q,KAAOjR,EAAOmR,QACnBhR,EAAKwL,OAAS3L,EAAOoR,UACrBjR,EAAKkR,cAEPhM,KAAQ,SAAUrF,GAChB,GAAIG,GAAOH,EAAOG,IAClBA,GAAK+Q,aACL/Q,EAAK8Q,KAAOjR,EAAOsR,QACnBnR,EAAKwL,OAAS3L,EAAOuR,UACrBpR,EAAKkR,gBAyHb,MA5GA1S,GAAQpC,UAAUgJ,SAAW,aAa7B5G,EAAQpC,UAAU6E,IAAM,SAAUD,EAAQnB,GACxCpF,KAAK2Q,QACL3Q,KAAKuE,QAAQvE,KAAK2Q,QAChBpK,OAAUA,EACVnB,OAAUA,EACVwR,UAAa,GAAIC,OAIf7W,KAAK2Q,MAAQ3Q,KAAKuE,QAAQ/C,OAAS,GACrCxB,KAAKuE,QAAQqM,OAAO5Q,KAAK2Q,MAAQ,EAAG3Q,KAAKuE,QAAQ/C,OAASxB,KAAK2Q,MAAQ,GAIzE3Q,KAAK2K,YAMP5G,EAAQpC,UAAUmB,MAAQ,WACxB9C,KAAKuE,WACLvE,KAAK2Q,MAAQ,GAGb3Q,KAAK2K,YAOP5G,EAAQpC,UAAUkJ,QAAU,WAC1B,MAAQ7K,MAAK2Q,OAAS,GAOxB5M,EAAQpC,UAAUmJ,QAAU,WAC1B,MAAQ9K,MAAK2Q,MAAQ3Q,KAAKuE,QAAQ/C,OAAS,GAM7CuC,EAAQpC,UAAU4I,KAAO,WACvB,GAAIvK,KAAK6K,UAAW,CAClB,GAAI8E,GAAM3P,KAAKuE,QAAQvE,KAAK2Q,MAC5B,IAAIhB,EAAK,CACP,GAAIpJ,GAASvG,KAAK0U,QAAQ/E,EAAIpJ,OAC1BA,IAAUA,EAAOgE,MACnBhE,EAAOgE,KAAKoF,EAAIvK,QACZuK,EAAIvK,OAAO0R,cACb9W,KAAKmI,OAAOR,aAAagI,EAAIvK,OAAO0R,eAItC/V,EAAKsC,IAAI,0BAA4BsM,EAAIpJ,OAAS,KAGtDvG,KAAK2Q,QAGL3Q,KAAK2K,aAOT5G,EAAQpC,UAAU8I,KAAO,WACvB,GAAIzK,KAAK8K,UAAW,CAClB9K,KAAK2Q,OAEL,IAAIhB,GAAM3P,KAAKuE,QAAQvE,KAAK2Q,MAC5B,IAAIhB,EAAK,CACP,GAAIpJ,GAASvG,KAAK0U,QAAQ/E,EAAIpJ,OAC1BA,IAAUA,EAAOkE,MACnBlE,EAAOkE,KAAKkF,EAAIvK,QACZuK,EAAIvK,OAAO2R,cACb/W,KAAKmI,OAAOR,aAAagI,EAAIvK,OAAO2R,eAItChW,EAAKsC,IAAI,0BAA4BsM,EAAIpJ,OAAS,KAKtDvG,KAAK2K,aAIF5G,GACPH,MAAMhE,EAASe,KAAiEkD,SAAlCjD,IAAgDf,EAAOD,QAAUgB,KAK5G,SAASf,EAAQD,EAASM,GAE/B,GAAIU,EAAgCA,GAAgC,WASlE,QAASoD,GAAWmE,EAAQlH,GAC1B,GAAI+J,GAAYhL,IAEhBA,MAAKmI,OAASA,EACdnI,KAAKgX,QAAUnT,OACf7D,KAAKiX,MAAQ,IACbjX,KAAKkX,SAAWrT,OAEhB7D,KAAKmE,OACLnE,KAAKmE,IAAIlD,UAAYA,CAErB,IAAIkE,GAAQ8D,SAASC,cAAc,QACnClJ,MAAKmE,IAAIgB,MAAQA,EACjBA,EAAMgE,UAAY,SAClBlI,EAAU0E,YAAYR,EACtB,IAAIa,GAAQiD,SAASC,cAAc,QACnClJ,MAAKmE,IAAI6B,MAAQA,EACjBb,EAAMQ,YAAYK,EAClB,IAAImR,GAAKlO,SAASC,cAAc,KAChClD,GAAML,YAAYwR,EAElB,IAAIC,GAAKnO,SAASC,cAAc,KAChCiO,GAAGxR,YAAYyR,EACf,IAAIjR,GAAU8C,SAASC,cAAc,MACrClJ,MAAKmE,IAAIgC,QAAUA,EACnBA,EAAQgD,UAAY,UACpBiO,EAAGzR,YAAYQ,GAEfiR,EAAKnO,SAASC,cAAc,MAC5BiO,EAAGxR,YAAYyR,EACf,IAAIC,GAAWpO,SAASC,cAAc,MACtClJ,MAAKmE,IAAImT,MAAQD,EACjBA,EAASlO,UAAY,QACrBkO,EAAS/M,MAAQ,2BACjB8M,EAAGzR,YAAY0R,EAGf,IAAIE,GAAatO,SAASC,cAAc,QACxCmO,GAAS1R,YAAY4R,EACrB,IAAIC,GAAcvO,SAASC,cAAc,QACzCqO,GAAW5R,YAAY6R,GACvBL,EAAKlO,SAASC,cAAc,MAC5BsO,EAAY7R,YAAYwR,EAExB,IAAIM,GAAgBxO,SAASC,cAAc,SAC3CuO,GAActO,UAAY,UAC1BiO,EAAKnO,SAASC,cAAc,MAC5BkO,EAAGzR,YAAY8R,GACfN,EAAGxR,YAAYyR,EAEf,IAAIvS,GAASoE,SAASC,cAAc,QACpClJ,MAAKmE,IAAIU,OAASA,EAClBA,EAAO2E,QAAU,SAAUT,GACzBiC,EAAU0M,iBAAiB3O,IAE7BlE,EAAO4E,SAAW,SAAUV,GAC1BiC,EAAU2M,UAAU5O,IAEtBlE,EAAO6E,UAAY,SAAUX,GAC3BiC,EAAUE,WAAWnC,IAEvBlE,EAAO8E,QAAU,SAAUZ,GACzBiC,EAAU4M,SAAS7O,IAErB0O,EAAcrO,QAAU,WACtBvE,EAAO8G,UAITyL,EAAKnO,SAASC,cAAc,MAC5BkO,EAAGzR,YAAYd,GACfsS,EAAGxR,YAAYyR,EAEf,IAAIS,GAAa5O,SAASC,cAAc,SACxC2O,GAAWvN,MAAQ,sBACnBuN,EAAW1O,UAAY,OACvB0O,EAAWzO,QAAU,WACnB4B,EAAUa,QAEZuL,EAAKnO,SAASC,cAAc,MAC5BkO,EAAGzR,YAAYkS,GACfV,EAAGxR,YAAYyR,EAEf,IAAIU,GAAiB7O,SAASC,cAAc,SAC5C4O,GAAexN,MAAQ,gCACvBwN,EAAe3O,UAAY,WAC3B2O,EAAe1O,QAAU,WACvB4B,EAAUY,YAEZwL,EAAKnO,SAASC,cAAc,MAC5BkO,EAAGzR,YAAYmS,GACfX,EAAGxR,YAAYyR,GA6LjB,MArLApT,GAAUrC,UAAUkK,KAAO,SAAS/D,GAClC,GAAoBjE,QAAhB7D,KAAKmG,QAAsB,CAC7B,GAAIwK,GAA6B9M,QAApB7D,KAAK+X,YAA4B/X,KAAK+X,YAAc,EAAI,CACjEpH,GAAQ3Q,KAAKmG,QAAQ3E,OAAS,IAChCmP,EAAQ,GAEV3Q,KAAKgY,iBAAiBrH,EAAO7I,KASjC9D,EAAUrC,UAAUiK,SAAW,SAAS9D,GACtC,GAAoBjE,QAAhB7D,KAAKmG,QAAsB,CAC7B,GAAIsC,GAAMzI,KAAKmG,QAAQ3E,OAAS,EAC5BmP,EAA6B9M,QAApB7D,KAAK+X,YAA4B/X,KAAK+X,YAAc,EAAItP,CACzD,GAARkI,IACFA,EAAQlI,GAEVzI,KAAKgY,iBAAiBrH,EAAO7I,KAWjC9D,EAAUrC,UAAUqW,iBAAmB,SAASrH,EAAO7I,GAErD,GAAI9H,KAAKiY,aAAc,CACrB,GAAIC,GAAWlY,KAAKiY,aAAa1S,KAC7B4S,EAAWnY,KAAKiY,aAAalI,IACjB,UAAZoI,QACKD,GAASE,wBAGTF,GAASG,kBAElBH,EAASI,YAGX,IAAKtY,KAAKmG,UAAYnG,KAAKmG,QAAQwK,GAIjC,MAFA3Q,MAAK+X,YAAclU,YACnB7D,KAAKiY,aAAepU,OAItB7D,MAAK+X,YAAcpH,CAGnB,IAAIpL,GAAOvF,KAAKmG,QAAQnG,KAAK+X,aAAaxS,KACtCwK,EAAO/P,KAAKmG,QAAQnG,KAAK+X,aAAahI,IAC9B,UAARA,EACFxK,EAAK6S,mBAAoB,EAGzB7S,EAAK8S,mBAAoB,EAE3BrY,KAAKiY,aAAejY,KAAKmG,QAAQnG,KAAK+X,aACtCxS,EAAK+S,YAGL/S,EAAK0C,SAAS,WACRH,GACFvC,EAAKuC,MAAMiI,MASjB/L,EAAUrC,UAAU4W,YAAc,WACZ1U,QAAhB7D,KAAKgX,UACPtP,aAAa1H,KAAKgX,eACXhX,MAAKgX,UAUhBhT,EAAUrC,UAAU+V,iBAAmB,WAGrC1X,KAAKuY,aACL,IAAIvN,GAAYhL,IAChBA,MAAKgX,QAAUnO,WAAW,SAAUE,GAC9BiC,EAAU2M,UAAU5O,IAEtB/I,KAAKiX,QAWXjT,EAAUrC,UAAUgW,UAAY,SAAU5O,EAAOyP,GAC/CxY,KAAKuY,aAEL,IAAIjT,GAAQtF,KAAKmE,IAAIU,OAAOS,MACxBY,EAAQZ,EAAM9D,OAAS,EAAK8D,EAAQzB,MACxC,IAAIqC,GAAQlG,KAAKkX,UAAYsB,EAO3B,GALAxY,KAAKkX,SAAWhR,EAChBlG,KAAKmG,QAAUnG,KAAKmI,OAAOtD,OAAOqB,GAClClG,KAAKgY,iBAAiBnU,QAGVA,QAARqC,EAAmB,CACrB,GAAIuS,GAAczY,KAAKmG,QAAQ3E,MAC/B,QAAQiX,GACN,IAAK,GAAGzY,KAAKmE,IAAIgC,QAAQuS,UAAY,iBAAmB,MACxD,KAAK,GAAG1Y,KAAKmE,IAAIgC,QAAQuS,UAAY,eAAiB,MACtD,SAAS1Y,KAAKmE,IAAIgC,QAAQuS,UAAYD,EAAc,qBAItDzY,MAAKmE,IAAIgC,QAAQuS,UAAY,IAUnC1U,EAAUrC,UAAUuJ,WAAa,SAAUnC,GACzC,GAAIqC,GAASrC,EAAMsC,KACL,KAAVD,GACFpL,KAAKmE,IAAIU,OAAOS,MAAQ,GACxBtF,KAAK2X,UAAU5O,GACfA,EAAMQ,iBACNR,EAAM+C,mBAEW,IAAVV,IACHrC,EAAMwC,QAERvL,KAAK2X,UAAU5O,GAAO,GAEfA,EAAMyC,SAEbxL,KAAK4L,WAIL5L,KAAK6L,OAEP9C,EAAMQ,iBACNR,EAAM+C,oBASV9H,EAAUrC,UAAUiW,SAAW,SAAU7O,GACvC,GAAIqC,GAASrC,EAAMuC,OACL,KAAVF,GAA0B,IAAVA,GAClBpL,KAAK0X,iBAAiB3O,IAInB/E,GACPzD,KAAKX,EAASM,EAAqBN,EAASC,KAA2CgE,SAAlCjD,IAAgDf,EAAOD,QAAUgB,KAOnH,SAASf,EAAQD,EAASM,GAE/B,GAAIS,GAA8BC,CAAgCD,IAAgCT,EAAoB,GAAIA,EAAoB,IAAKA,EAAoB,IAAKU,EAAgC,SAAU+X,EAAaC,EAAmB7X,GAapP,QAASkD,GAAMkE,EAAQ/C,GAErBpF,KAAKmI,OAASA,EACdnI,KAAKmE,OACLnE,KAAK6Y,UAAW,EAEbzT,GAAWA,YAAkBwK,SAC9B5P,KAAK8Y,SAAS1T,EAAOC,MAAOD,EAAO2T,eACnC/Y,KAAK+N,SAAS3I,EAAOE,MAAOF,EAAO6F,QAGnCjL,KAAK8Y,SAAS,IACd9Y,KAAK+N,SAAS,OAQlB9J,EAAKtC,UAAUqX,mBAAqB,WAMlC,GALAhZ,KAAKiZ,UACH5T,OAAO,EACPC,OAAO,GAGLtF,KAAKmI,SACPnI,KAAKiZ,SAAS5T,MAAqC,SAA7BrF,KAAKmI,OAAOjH,QAAQU,KAC1C5B,KAAKiZ,SAAS3T,MAAqC,SAA7BtF,KAAKmI,OAAOjH,QAAQU,KAET,SAA7B5B,KAAKmI,OAAOjH,QAAQU,MAA4D,kBAAjC5B,MAAKmI,OAAOjH,QAAQ+X,UAA0B,CAC/F,GAAIA,GAAWjZ,KAAKmI,OAAOjH,QAAQ+X,UACjC5T,MAAOrF,KAAKqF,MACZC,MAAOtF,KAAKsF,MACZ4T,KAAMlZ,KAAKkZ,QAGW,kBAAbD,IACTjZ,KAAKiZ,SAAS5T,MAAQ4T,EACtBjZ,KAAKiZ,SAAS3T,MAAQ2T,IAGQ,iBAAnBA,GAAS5T,QAAqBrF,KAAKiZ,SAAS5T,MAAQ4T,EAAS5T,OAC1C,iBAAnB4T,GAAS3T,QAAqBtF,KAAKiZ,SAAS3T,MAAQ2T,EAAS3T,UAUhFrB,EAAKtC,UAAUuX,KAAO,WAGpB,IAFA,GAAI3T,GAAOvF,KACPkZ,KACG3T,GAAM,CACX,GAAIF,GAAQE,EAAKF,OAASE,EAAKoL,KACjB9M,UAAVwB,GACF6T,EAAKC,QAAQ9T,GAEfE,EAAOA,EAAK0P,OAEd,MAAOiE,IAOTjV,EAAKtC,UAAUyX,UAAY,SAASnE,GAClCjV,KAAKiV,OAASA,GAQhBhR,EAAKtC,UAAUmX,SAAW,SAASzT,EAAO0T,GACxC/Y,KAAKqF,MAAQA,EACbrF,KAAK+Y,cAAkC,GAAjBA,GAOxB9U,EAAKtC,UAAU0X,SAAW,WAKxB,MAJmBxV,UAAf7D,KAAKqF,OACPrF,KAAKsZ,eAGAtZ,KAAKqF,OASdpB,EAAKtC,UAAUoM,SAAW,SAASzI,EAAO2F,GACxC,GAAIsO,GAAYrI,EAGZH,EAAS/Q,KAAK+Q,MAClB,IAAIA,EACF,KAAOA,EAAOvP,QACZxB,KAAK4E,YAAYmM,EAAO,GAS5B,IAHA/Q,KAAKiL,KAAOjL,KAAKwZ,SAASlU,GAGtB2F,GAAQA,GAAQjL,KAAKiL,KAAM,CAC7B,GAAY,UAARA,GAAiC,QAAbjL,KAAKiL,KAI3B,KAAM,IAAI7J,OAAM,6CACoBpB,KAAKiL,KACrC,2BAA6BA,EAAO,IALxCjL,MAAKiL,KAAOA,EAShB,GAAiB,SAAbjL,KAAKiL,KAAiB,CAExBjL,KAAK+Q,SACL,KAAK,GAAIvN,GAAI,EAAGyN,EAAO3L,EAAM9D,OAAYyP,EAAJzN,EAAUA,IAC7C+V,EAAajU,EAAM9B,GACAK,SAAf0V,GAA8BA,YAAsBtU,YAEtDiM,EAAQ,GAAIjN,GAAKjE,KAAKmI,QACpB7C,MAAOiU,IAETvZ,KAAK2F,YAAYuL,GAGrBlR,MAAKsF,MAAQ,OAEV,IAAiB,UAAbtF,KAAKiL,KAAkB,CAE9BjL,KAAK+Q,SACL,KAAK,GAAI0I,KAAcnU,GACjBA,EAAMR,eAAe2U,KACvBF,EAAajU,EAAMmU,GACA5V,SAAf0V,GAA8BA,YAAsBtU,YAEtDiM,EAAQ,GAAIjN,GAAKjE,KAAKmI,QACpB9C,MAAOoU,EACPnU,MAAOiU,IAETvZ,KAAK2F,YAAYuL,IAIvBlR,MAAKsF,MAAQ,OAIbtF,MAAK+Q,OAASlN,OACd7D,KAAKsF,MAAQA,GAkBjBrB,EAAKtC,UAAUkE,SAAW,WAGxB,GAAiB,SAAb7F,KAAKiL,KAAiB,CACxB,GAAIyO,KAIJ,OAHA1Z,MAAK+Q,OAAO4I,QAAS,SAAUzI,GAC7BwI,EAAIjL,KAAKyC,EAAMrL,cAEV6T,EAEJ,GAAiB,UAAb1Z,KAAKiL,KAAkB,CAC9B,GAAI0E,KAIJ,OAHA3P,MAAK+Q,OAAO4I,QAAS,SAAUzI,GAC7BvB,EAAIuB,EAAMmI,YAAcnI,EAAMrL,aAEzB8J,EAOP,MAJmB9L,UAAf7D,KAAKsF,OACPtF,KAAK4Z,eAGA5Z,KAAKsF,OAQhBrB,EAAKtC,UAAUkY,SAAW,WACxB,MAAQ7Z,MAAKiV,OAASjV,KAAKiV,OAAO4E,WAAa,EAAI,GASrD5V,EAAKtC,UAAUgU,MAAQ,WACrB,GAAIA,GAAQ,GAAI1R,GAAKjE,KAAKmI,OAS1B,IARAwN,EAAM1K,KAAOjL,KAAKiL,KAClB0K,EAAMtQ,MAAQrF,KAAKqF,MACnBsQ,EAAMmE,eAAiB9Z,KAAK8Z,eAC5BnE,EAAMoD,cAAgB/Y,KAAK+Y,cAC3BpD,EAAMrQ,MAAQtF,KAAKsF,MACnBqQ,EAAMoE,eAAiB/Z,KAAK+Z,eAC5BpE,EAAMkD,SAAW7Y,KAAK6Y,SAElB7Y,KAAK+Q,OAAQ,CAEf,GAAIiJ,KACJha,MAAK+Q,OAAO4I,QAAQ,SAAUzI,GAC5B,GAAI+I,GAAa/I,EAAMyE,OACvBsE,GAAWb,UAAUzD,GACrBqE,EAAYvL,KAAKwL,KAEnBtE,EAAM5E,OAASiJ,MAIfrE,GAAM5E,OAASlN,MAGjB,OAAO8R,IAQT1R,EAAKtC,UAAU+D,OAAS,SAASD,GAC1BzF,KAAK+Q,SAKV/Q,KAAK6Y,UAAW,EACZ7Y,KAAKmE,IAAIuB,SACX1F,KAAKmE,IAAIuB,OAAOyD,UAAY,YAG9BnJ,KAAKyW,aAEU,GAAXhR,GACFzF,KAAK+Q,OAAO4I,QAAQ,SAAUzI,GAC5BA,EAAMxL,OAAOD,OAUnBxB,EAAKtC,UAAUoE,SAAW,SAASN,GAC5BzF,KAAK+Q,SAIV/Q,KAAKsW,aAGU,GAAX7Q,GACFzF,KAAK+Q,OAAO4I,QAAQ,SAAUzI,GAC5BA,EAAMnL,SAASN,KAMfzF,KAAKmE,IAAIuB,SACX1F,KAAKmE,IAAIuB,OAAOyD,UAAY,aAE9BnJ,KAAK6Y,UAAW,IAMlB5U,EAAKtC,UAAU8U,WAAa,WAC1B,GAAI1F,GAAS/Q,KAAK+Q,MAClB,IAAKA,GAGA/Q,KAAK6Y,SAAV,CAIA,GAAI1B,GAAKnX,KAAKmE,IAAIgT,GACdhS,EAAQgS,EAAKA,EAAGxS,WAAad,MACjC,IAAIsB,EAAO,CAET,GAAIsQ,GAASzV,KAAKka,YACdC,EAAShD,EAAGiD,WACZD,GACFhV,EAAMgQ,aAAaM,EAAQ0E,GAG3BhV,EAAMQ,YAAY8P,GAIpBzV,KAAK+Q,OAAO4I,QAAQ,SAAUzI,GAC5B/L,EAAMgQ,aAAajE,EAAMjL,SAAUwP,GACnCvE,EAAMuF,kBAQZxS,EAAKtC,UAAU0Y,KAAO,WACpB,GAAIlD,GAAKnX,KAAKmE,IAAIgT,GACdhS,EAAQgS,EAAKA,EAAGxS,WAAad,MAC7BsB,IACFA,EAAMP,YAAYuS,GAEpBnX,KAAKsW,cAOPrS,EAAKtC,UAAU2U,WAAa,WAC1B,GAAIvF,GAAS/Q,KAAK+Q,MAClB,IAAKA,GAGA/Q,KAAK6Y,SAAV,CAKA,GAAIpD,GAASzV,KAAKka,WACdzE,GAAO9Q,YACT8Q,EAAO9Q,WAAWC,YAAY6Q,GAIhCzV,KAAK+Q,OAAO4I,QAAQ,SAAUzI,GAC5BA,EAAMmJ,WAUVpW,EAAKtC,UAAUgE,YAAc,SAASJ,GACpC,GAAIvF,KAAKsa,aAAc,CASrB,GAPA/U,EAAK6T,UAAUpZ,MACfuF,EAAKwT,cAA8B,UAAb/Y,KAAKiL,KACV,SAAbjL,KAAKiL,OACP1F,EAAKoL,MAAQ3Q,KAAK+Q,OAAOvP,QAE3BxB,KAAK+Q,OAAOtC,KAAKlJ,GAEbvF,KAAK6Y,SAAU,CAEjB,GAAI0B,GAAQhV,EAAKU,SACbuU,EAAWxa,KAAKka,YAChB/U,EAAQqV,EAAWA,EAAS7V,WAAad,MACzC2W,IAAYrV,GACdA,EAAMgQ,aAAaoF,EAAOC,GAG5BjV,EAAKkR,aAGPzW,KAAKsY,WAAWmC,eAAiB,IACjClV,EAAK+S,WAAW7S,SAAW,MAW/BxB,EAAKtC,UAAU+Y,WAAa,SAASnV,EAAM6P,GACzC,GAAIpV,KAAKsa,aAAc,CAGrB,GAAItU,GAAShG,KAAKmE,IAAM,GAAInE,KAAKmE,IAAIgT,GAAGxS,WAAad,MACrD,IAAImC,EAAO,CACT,GAAI2U,GAAS1R,SAASC,cAAc,KACpCyR,GAAO9N,MAAM9F,OAASf,EAAMgB,aAAe,KAC3ChB,EAAML,YAAYgV,GAGhBpV,EAAK0P,QACP1P,EAAK0P,OAAOrQ,YAAYW,GAGtB6P,YAAsBwF,GACxB5a,KAAK2F,YAAYJ,GAGjBvF,KAAKmV,aAAa5P,EAAM6P,GAGtBpP,GACFA,EAAMpB,YAAY+V,KAYxB1W,EAAKtC,UAAUsU,OAAS,SAAU1Q,EAAMoL,GACtC,GAAIpL,EAAK0P,QAAUjV,KAAM,CAEvB,GAAI6a,GAAe7a,KAAK+Q,OAAON,QAAQlL,EACpBoL,GAAfkK,GAEFlK,IAIJ,GAAIyE,GAAapV,KAAK+Q,OAAOJ,IAAU3Q,KAAKyV,MAC5CzV,MAAK0a,WAAWnV,EAAM6P,IASxBnR,EAAKtC,UAAUwT,aAAe,SAAS5P,EAAM6P,GAC3C,GAAIpV,KAAKsa,aAAc,CACrB,GAAIlF,GAAcpV,KAAKyV,OAIrBlQ,EAAK6T,UAAUpZ,MACfuF,EAAKwT,cAA8B,UAAb/Y,KAAKiL,KAC3BjL,KAAK+Q,OAAOtC,KAAKlJ,OAEd,CAEH,GAAIoL,GAAQ3Q,KAAK+Q,OAAON,QAAQ2E,EAChC,IAAa,IAATzE,EACF,KAAM,IAAIvP,OAAM,iBAIlBmE,GAAK6T,UAAUpZ,MACfuF,EAAKwT,cAA8B,UAAb/Y,KAAKiL,KAC3BjL,KAAK+Q,OAAOH,OAAOD,EAAO,EAAGpL,GAG/B,GAAIvF,KAAK6Y,SAAU,CAEjB,GAAI0B,GAAQhV,EAAKU,SACbkU,EAAS/E,EAAWnP,SACpBd,EAAQgV,EAASA,EAAOxV,WAAad,MACrCsW,IAAUhV,GACZA,EAAMgQ,aAAaoF,EAAOJ,GAG5B5U,EAAKkR,aAGPzW,KAAKsY,WAAWmC,eAAiB,IACjClV,EAAK+S,WAAW7S,SAAW,MAU/BxB,EAAKtC,UAAU2T,YAAc,SAAS/P,EAAMgQ,GAC1C,GAAIvV,KAAKsa,aAAc,CACrB,GAAI3J,GAAQ3Q,KAAK+Q,OAAON,QAAQ8E,GAC5BH,EAAapV,KAAK+Q,OAAOJ,EAAQ,EACjCyE,GACFpV,KAAKmV,aAAa5P,EAAM6P,GAGxBpV,KAAK2F,YAAYJ,KAYvBtB,EAAKtC,UAAUkD,OAAS,SAASqB,GAC/B,GACIyK,GADAxK,KAEAtB,EAASqB,EAAOA,EAAK4U,cAAgBjX,MAOzC,UAJO7D,MAAK+a,kBACL/a,MAAKgb,YAGMnX,QAAd7D,KAAKqF,MAAoB,CAC3B,GAAIA,GAAQgK,OAAOrP,KAAKqF,OAAOyV,aAC/BnK,GAAQtL,EAAMoL,QAAQ5L,GACT,IAAT8L,IACF3Q,KAAK+a,aAAc,EACnB5U,EAAQsI,MACNlJ,KAAQvF,KACR+P,KAAQ,WAKZ/P,KAAKib,kBAIP,GAAIjb,KAAKsa,aAAc,CAIrB,GAAIta,KAAK+Q,OAAQ,CACf,GAAImK,KACJlb,MAAK+Q,OAAO4I,QAAQ,SAAUzI,GAC5BgK,EAAeA,EAAaC,OAAOjK,EAAMrM,OAAOqB,MAElDC,EAAUA,EAAQgV,OAAOD,GAI3B,GAAcrX,QAAVgB,EAAqB,CACvB,GAAIY,IAAU,CACa,IAAvByV,EAAa1Z,OACfxB,KAAK+F,SAASN,GAGdzF,KAAK0F,OAAOD,QAIb,CAEH,GAAkB5B,QAAd7D,KAAKsF,MAAqB,CAC5B,GAAIA,GAAQ+J,OAAOrP,KAAKsF,OAAOwV,aAC/BnK,GAAQrL,EAAMmL,QAAQ5L,GACT,IAAT8L,IACF3Q,KAAKgb,aAAc,EACnB7U,EAAQsI,MACNlJ,KAAQvF,KACR+P,KAAQ,WAMd/P,KAAKob,kBAGP,MAAOjV,IAQTlC,EAAKtC,UAAUsG,SAAW,SAASC,GACjC,IAAKlI,KAAKmE,IAAIgT,KAAOnX,KAAKmE,IAAIgT,GAAGxS,WAI/B,IAFA,GAAIsQ,GAASjV,KAAKiV,OACdxP,GAAU,EACPwP,GACLA,EAAOvP,OAAOD,GACdwP,EAASA,EAAOA,MAIhBjV,MAAKmE,IAAIgT,IAAMnX,KAAKmE,IAAIgT,GAAGxS,YAC7B3E,KAAKmI,OAAOF,SAASjI,KAAKmE,IAAIgT,GAAGkE,UAAWnT,IAMhDjE,EAAKqX,aAAezX,OAQpBI,EAAKtC,UAAUmG,MAAQ,SAASyT,GAG9B,GAFAtX,EAAKqX,aAAeC,EAEhBvb,KAAKmE,IAAIgT,IAAMnX,KAAKmE,IAAIgT,GAAGxS,WAAY,CACzC,GAAIR,GAAMnE,KAAKmE,GAEf,QAAQoX,GACN,IAAK,OACCpX,EAAIqX,KACNrX,EAAIqX,KAAK1T,QAGT3D,EAAIkG,KAAKvC,OAEX,MAEF,KAAK,OACH3D,EAAIkG,KAAKvC,OACT,MAEF,KAAK,SACC9H,KAAKsa,aACPnW,EAAIuB,OAAOoC,QAEJ3D,EAAIkB,OAASrF,KAAK+Y,eACzB5U,EAAIkB,MAAMyC,QACV/G,EAAK2K,sBAAsBvH,EAAIkB,QAExBlB,EAAImB,QAAUtF,KAAKsa,cAC1BnW,EAAImB,MAAMwC,QACV/G,EAAK2K,sBAAsBvH,EAAImB,QAG/BnB,EAAIkG,KAAKvC,OAEX,MAEF,KAAK,QACC3D,EAAIkB,OAASrF,KAAK+Y,eACpB5U,EAAIkB,MAAMyC,QACV/G,EAAK2K,sBAAsBvH,EAAIkB,QAExBlB,EAAImB,QAAUtF,KAAKsa,cAC1BnW,EAAImB,MAAMwC,QACV/G,EAAK2K,sBAAsBvH,EAAImB,QAExBtF,KAAKsa,aACZnW,EAAIuB,OAAOoC,QAGX3D,EAAIkG,KAAKvC,OAEX,MAEF,KAAK,QACL,QACM3D,EAAImB,QAAUtF,KAAKsa,cACrBnW,EAAImB,MAAMwC,QACV/G,EAAK2K,sBAAsBvH,EAAImB,QAExBnB,EAAIkB,OAASrF,KAAK+Y,eACzB5U,EAAIkB,MAAMyC,QACV/G,EAAK2K,sBAAsBvH,EAAIkB,QAExBrF,KAAKsa,aACZnW,EAAIuB,OAAOoC,QAGX3D,EAAIkG,KAAKvC,WAWnB7D,EAAK0H,OAAS,SAAS8P,GACrB5S,WAAW,WACT9H,EAAK2K,sBAAsB+P,IAC1B,IAMLxX,EAAKtC,UAAUiE,KAAO,WAEpB5F,KAAK4Z,cAAa,GAClB5Z,KAAKsZ,cAAa,IAUpBrV,EAAKtC,UAAU+Z,WAAa,SAASnW,GACnC,GAAIoQ,GAAQpQ,EAAKoQ,OASjB,OAFA3V,MAAKsV,YAAYK,EAAOpQ,GAEjBoQ,GAST1R,EAAKtC,UAAUga,aAAe,SAASpW,GACrC,GAAIvF,MAAQuF,EACV,OAAO,CAGT;GAAIwL,GAAS/Q,KAAK+Q,MAClB,IAAIA,EAEF,IAAK,GAAIvN,GAAI,EAAGyN,EAAOF,EAAOvP,OAAYyP,EAAJzN,EAAUA,IAC9C,GAAIuN,EAAOvN,GAAGmY,aAAapW,GACzB,OAAO,CAKb,QAAO,GAWTtB,EAAKtC,UAAUia,MAAQ,SAASrW,EAAM6P,GACpC,GAAI7P,GAAQ6P,EAAZ,CAMA,GAAI7P,EAAKoW,aAAa3b,MACpB,KAAM,IAAIoB,OAAM,6CAIdmE,GAAK0P,QACP1P,EAAK0P,OAAOrQ,YAAYW,EAI1B,IAAIoQ,GAAQpQ,EAAKoQ,OACjBpQ,GAAKsW,WAGDzG,EACFpV,KAAKmV,aAAaQ,EAAOP,GAGzBpV,KAAK2F,YAAYgQ,KAgBrB1R,EAAKtC,UAAUiD,YAAc,SAASW,GACpC,GAAIvF,KAAK+Q,OAAQ,CACf,GAAIJ,GAAQ3Q,KAAK+Q,OAAON,QAAQlL,EAEhC,IAAa,IAAToL,EAAa,CACfpL,EAAK8U,aAGE9U,GAAKwV,kBACLxV,GAAKyV,WAEZ,IAAIc,GAAc9b,KAAK+Q,OAAOH,OAAOD,EAAO,GAAG,EAI/C,OAFA3Q,MAAKsY,WAAWmC,eAAiB,IAE1BqB,GAIX,MAAOjY,SAUTI,EAAKtC,UAAUoa,QAAU,SAAUxW,GACjCvF,KAAK4E,YAAYW,IAOnBtB,EAAKtC,UAAUiU,WAAa,SAAUE,GACpC,GAAID,GAAU7V,KAAKiL,IAEnB,IAAI4K,GAAWC,EAAf,CAKA,GAAgB,UAAXA,GAAkC,QAAXA,GACZ,UAAXD,GAAkC,QAAXA,EAIvB,CAEH,GACImG,GADA7W,EAAQnF,KAAKmE,IAAIgT,GAAKnX,KAAKmE,IAAIgT,GAAGxS,WAAad,MAGjDmY,GADEhc,KAAK6Y,SACE7Y,KAAKka,YAGLla,KAAKiG,QAEhB,IAAIkU,GAAU6B,GAAUA,EAAOrX,WAAcqX,EAAO5B,YAAcvW,MAGlE7D,MAAKqa,OACLra,KAAK6b,WAGL7b,KAAKiL,KAAO6K,EAGG,UAAXA,GACG9V,KAAK+Q,SACR/Q,KAAK+Q,WAGP/Q,KAAK+Q,OAAO4I,QAAQ,SAAUzI,GAC5BA,EAAM2K,iBACC3K,GAAMP,MACbO,EAAM6H,eAAgB,EACHlV,QAAfqN,EAAM7L,QACR6L,EAAM7L,MAAQ,OAIH,UAAXwQ,GAAkC,QAAXA,KACzB7V,KAAK6Y,UAAW,IAGA,SAAX/C,GACF9V,KAAK+Q,SACR/Q,KAAK+Q,WAGP/Q,KAAK+Q,OAAO4I,QAAQ,SAAUzI,EAAOP,GACnCO,EAAM2K,WACN3K,EAAM6H,eAAgB,EACtB7H,EAAMP,MAAQA,KAGD,UAAXkF,GAAkC,QAAXA,KACzB7V,KAAK6Y,UAAW,IAIlB7Y,KAAK6Y,UAAW,EAId1T,IACEgV,EACFhV,EAAMgQ,aAAanV,KAAKiG,SAAUkU,GAGlChV,EAAMQ,YAAY3F,KAAKiG,WAG3BjG,KAAKyW,iBApELzW,MAAKiL,KAAO6K,GAuEC,QAAXA,GAAgC,UAAXA,KAGrB9V,KAAKsF,MADQ,UAAXwQ,EACWzG,OAAOrP,KAAKsF,OAGZtF,KAAKic,YAAY5M,OAAOrP,KAAKsF,QAG5CtF,KAAK8H,SAGP9H,KAAKsY,WAAWmC,eAAiB,MASnCxW,EAAKtC,UAAUiY,aAAe,SAASsC,GAKrC,GAJIlc,KAAKmE,IAAImB,OAAsB,SAAbtF,KAAKiL,MAAgC,UAAbjL,KAAKiL,OACjDjL,KAAK+Z,eAAiBhZ,EAAKyR,aAAaxS,KAAKmE,IAAImB,QAGxBzB,QAAvB7D,KAAK+Z,eACP,IAEE,GAAIzU,EACJ,IAAiB,UAAbtF,KAAKiL,KACP3F,EAAQtF,KAAKmc,cAAcnc,KAAK+Z,oBAE7B,CACH,GAAIqC,GAAMpc,KAAKmc,cAAcnc,KAAK+Z,eAClCzU,GAAQtF,KAAKic,YAAYG,GAE3B,GAAI9W,IAAUtF,KAAKsF,MAAO,CACxB,GAAIsP,GAAW5U,KAAKsF,KACpBtF,MAAKsF,MAAQA,EACbtF,KAAKmI,OAAO7B,UAAU,aACpBf,KAAQvF,KACR4U,SAAYA,EACZC,SAAYvP,EACZwR,aAAgB9W,KAAKmI,OAAO9D,UAC5B0S,aAAgB/W,KAAKmI,OAAOJ,kBAIlC,MAAO7E,GAGL,GAFAlD,KAAKsF,MAAQzB,OAEC,GAAVqY,EACF,KAAMhZ,KAade,EAAKtC,UAAUyZ,gBAAkB,WAC/B,GAAIiB,GAAWrc,KAAKmE,IAAImB,KACxB,IAAI+W,EAAU,CAGZ,GAAIC,GAAItc,KAAKsF,MACTiX,EAAkB,QAAbvc,KAAKiL,KAAkBlK,EAAKkK,KAAKqR,GAAKtc,KAAKiL,KAChDwE,EAAc,UAAL8M,GAAiBxb,EAAK0O,MAAM6M,GACrCE,EAAQ,EAEVA,GADE/M,IAAUzP,KAAKiZ,SAAS3T,MAClB,GAEI,UAALiX,EACC,QAEI,UAALA,EACC,MAEI,WAALA,EACC,aAEDvc,KAAKsa,aACJ,GAEK,OAANgC,EACC,UAIA,QAEVD,EAASxP,MAAM2P,MAAQA,CAGvB,IAAIC,GAAiC,IAAtBpN,OAAOrP,KAAKsF,QAA6B,SAAbtF,KAAKiL,MAAgC,UAAbjL,KAAKiL,IAiBxE,IAhBIwR,EACF1b,EAAKuP,aAAa+L,EAAU,SAG5Btb,EAAK2P,gBAAgB2L,EAAU,SAI7B5M,EACF1O,EAAKuP,aAAa+L,EAAU,OAG5Btb,EAAK2P,gBAAgB2L,EAAU,OAIxB,SAALE,GAAqB,UAALA,EAAe,CACjC,GAAIG,GAAQ1c,KAAK+Q,OAAS/Q,KAAK+Q,OAAOvP,OAAS,CAC/C6a,GAAS/R,MAAQtK,KAAKiL,KAAO,eAAiByR,EAAQ,aAE1C,UAALH,GAAiBxb,EAAK0O,MAAM6M,GAC/Btc,KAAKiZ,SAAS3T,QAChB+W,EAAS/R,MAAQ,sDAInB+R,EAAS/R,MAAQ,EAIftK,MAAKqY,kBACPtX,EAAKuP,aAAa+L,EAAU,oBAG5Btb,EAAK2P,gBAAgB2L,EAAU,oBAE7Brc,KAAKgb,YACPja,EAAKuP,aAAa+L,EAAU,aAG5Btb,EAAK2P,gBAAgB2L,EAAU,aAIjCtb,EAAK8P,gBAAgBwL,KAWzBpY,EAAKtC,UAAUsZ,gBAAkB,WAC/B,GAAI0B,GAAW3c,KAAKmE,IAAIkB,KACxB,IAAIsX,EAAU,CAEZ,GAAIF,GAAiC,IAAtBpN,OAAOrP,KAAKqF,QAAoC,SAApBrF,KAAKiV,OAAOhK,IACnDwR,GACF1b,EAAKuP,aAAaqM,EAAU,SAG5B5b,EAAK2P,gBAAgBiM,EAAU,SAI7B3c,KAAKoY,kBACPrX,EAAKuP,aAAaqM,EAAU,oBAG5B5b,EAAK2P,gBAAgBiM,EAAU,oBAE7B3c,KAAK+a,YACPha,EAAKuP,aAAaqM,EAAU,aAG5B5b,EAAK2P,gBAAgBiM,EAAU,aAIjC5b,EAAK8P,gBAAgB8L,KAUzB1Y,EAAKtC,UAAU2X,aAAe,SAAS4C,GAKrC,GAJIlc,KAAKmE,IAAIkB,OAASrF,KAAK+Y,gBACzB/Y,KAAK8Z,eAAiB/Y,EAAKyR,aAAaxS,KAAKmE,IAAIkB,QAGxBxB,QAAvB7D,KAAK8Z,eACP,IACE,GAAIzU,GAAQrF,KAAKmc,cAAcnc,KAAK8Z,eAEpC,IAAIzU,IAAUrF,KAAKqF,MAAO,CACxB,GAAIuX,GAAW5c,KAAKqF,KACpBrF,MAAKqF,MAAQA,EACbrF,KAAKmI,OAAO7B,UAAU,aACpBf,KAAQvF,KACR4U,SAAYgI,EACZ/H,SAAYxP,EACZyR,aAAgB9W,KAAKmI,OAAO9D,UAC5B0S,aAAgB/W,KAAKmI,OAAOJ,kBAIlC,MAAO7E,GAGL,GAFAlD,KAAKqF,MAAQxB,OAEC,GAAVqY,EACF,KAAMhZ,KASde,EAAKtC,UAAUka,SAAW,WAKxB7b,KAAKmE,QAQPF,EAAKtC,UAAUsE,OAAS,WACtB,GAAI9B,GAAMnE,KAAKmE,GACf,IAAIA,EAAIgT,GACN,MAAOhT,GAAIgT,EASb,IANAnX,KAAKgZ,qBAGL7U,EAAIgT,GAAKlO,SAASC,cAAc,MAChC/E,EAAIgT,GAAG5R,KAAOvF,KAEmB,SAA7BA,KAAKmI,OAAOjH,QAAQU,KAAiB,CACvC,GAAIib,GAAS5T,SAASC,cAAc,KACpC,IAAIlJ,KAAKiZ,SAAS5T,OAEZrF,KAAKiV,OAAQ,CACf,GAAI6H,GAAU7T,SAASC,cAAc,SACrC/E,GAAIqX,KAAOsB,EACXA,EAAQ3T,UAAY,WACpB2T,EAAQxS,MAAQ,6CAChBuS,EAAOlX,YAAYmX,GAGvB3Y,EAAIgT,GAAGxR,YAAYkX,EAGnB,IAAIE,GAAS9T,SAASC,cAAc,MAChCmB,EAAOpB,SAASC,cAAc,SAClC/E,GAAIkG,KAAOA,EACXA,EAAKlB,UAAY,cACjBkB,EAAKC,MAAQ,0CACbyS,EAAOpX,YAAYxB,EAAIkG,MACvBlG,EAAIgT,GAAGxR,YAAYoX,GAIrB,GAAIC,GAAU/T,SAASC,cAAc,KAOrC,OANA/E,GAAIgT,GAAGxR,YAAYqX,GACnB7Y,EAAI8Y,KAAOjd,KAAKkd,iBAChBF,EAAQrX,YAAYxB,EAAI8Y,MAExBjd,KAAKsY,WAAWmC,eAAiB,IAE1BtW,EAAIgT,IAQblT,EAAKtC,UAAUwb,aAAe,SAAUpU,GACtC,GAAIxD,GAAOvF,IACNA,MAAKod,YACRpd,KAAKod,UAAYrc,EAAKmJ,iBAAiBjB,SAAU,YAC7C,SAAUF,GACRxD,EAAK8X,QAAQtU,MAIhB/I,KAAKsd,UACRtd,KAAKsd,QAAUvc,EAAKmJ,iBAAiBjB,SAAU,UAC3C,SAAUF,GACRxD,EAAKgY,WAAWxU,MAIxB/I,KAAKmI,OAAO/D,YAAYoQ,OACxBxU,KAAKwb,MACHgC,UAAavU,SAASwU,KAAK5Q,MAAM6Q,OACjC1H,YAAehW,KAAKiV,OACpBiB,WAAclW,KAAKiV,OAAOlE,OAAON,QAAQzQ,MACzC2d,OAAU5U,EAAM6U,MAChBC,MAAS7d,KAAK6Z,YAEhB5Q,SAASwU,KAAK5Q,MAAM6Q,OAAS,OAE7B3U,EAAMQ,kBAQRtF,EAAKtC,UAAU0b,QAAU,SAAUtU,GAEjC,GAGI+U,GAAQC,EAAQC,EAAQC,EAASC,EAAQC,EACzCC,EAAUC,EACVC,EAASC,EAASC,EAAUC,EAAYC,EAAYC,EALpDhY,EAASoC,EAAM6V,MACfjB,EAAS5U,EAAM6U,MAKfiB,GAAQ,CAQZ,IAHAf,EAAS9d,KAAKmE,IAAIgT,GAClBmH,EAAUvd,EAAK+F,eAAegX,GAC9BW,EAAaX,EAAOgB,aACPR,EAAT3X,EAAkB,CAEpBoX,EAASD,CACT,GACEC,GAASA,EAAOgB,gBAChBX,EAAWna,EAAKkH,kBAAkB4S,GAClCQ,EAAUR,EAAShd,EAAK+F,eAAeiX,GAAU,QAE5CA,GAAmBQ,EAAT5X,EAEbyX,KAAaA,EAASnJ,SACxBmJ,EAAWva,QAGRua,IAEHD,EAASL,EAAOnZ,WAAW2N,WAC3ByL,EAASI,EAASA,EAAO/D,YAAcvW,OACvCua,EAAWna,EAAKkH,kBAAkB4S,GAC9BK,GAAYpe,OACdoe,EAAWva,SAIXua,IAEFL,EAASK,EAASja,IAAIgT,GACtBoH,EAAUR,EAAShd,EAAK+F,eAAeiX,GAAU,EAC7CpX,EAAS4X,EAAUE,IACrBL,EAAWva,SAIXua,IACFA,EAASnJ,OAAOyF,WAAW1a,KAAMoe,GACjCS,GAAQ,OAOV,IAFAX,EAAUle,KAAK6Y,UAAY7Y,KAAKyV,OAAUzV,KAAKyV,OAAOxP,SAAWjG,KAAKmE,IAAIgT,GAC1E8G,EAAUC,EAASA,EAAO9D,YAAcvW,OAC3B,CACX2a,EAAWzd,EAAK+F,eAAemX,GAC/BD,EAASC,CACT,GACEI,GAAWpa,EAAKkH,kBAAkB6S,GAC9BA,IACFU,EAAaV,EAAO5D,YAChBrZ,EAAK+F,eAAekX,EAAO5D,aAAe,EAC9CuE,EAAaX,EAAUU,EAAaF,EAAY,EAEX,GAAjCH,EAASpJ,OAAOlE,OAAOvP,QAAe6c,EAASpJ,OAAOlE,OAAO,IAAM/Q,OAGrEse,GAAW,KAKfN,EAASA,EAAO5D,kBAEX4D,GAAUrX,EAAS2X,EAAUK,EAEpC,IAAIN,GAAYA,EAASpJ,OAAQ,CAE/B,GAAI+J,GAASrB,EAAS3d,KAAKwb,KAAKmC,OAC5BsB,EAAY1W,KAAK2W,MAAMF,EAAQ,GAAK,GACpCnB,EAAQ7d,KAAKwb,KAAKqC,MAAQoB,EAC1BE,EAAYd,EAASxE,UAIzB,KADAkE,EAASM,EAASla,IAAIgT,GAAG4H,gBACNlB,EAAZsB,GAAqBpB,GAAQ,CAElC,GADAK,EAAWna,EAAKkH,kBAAkB4S,GAC9BK,GAAYpe,MAAQoe,EAASgB,WAAWpf,WAGvC,CAAA,KAAIoe,YAAoBxD,IAgB3B,KAfA,IAAI7J,GAASqN,EAASnJ,OAAOlE,MAC7B,MAAIA,EAAOvP,OAAS,GACE,GAAjBuP,EAAOvP,QAAeuP,EAAO,IAAM/Q,MAStC,KAJAqe,GAAWpa,EAAKkH,kBAAkB4S,GAClCoB,EAAYd,EAASxE,WAUzBkE,EAASA,EAAOgB,gBAIdb,EAAO9D,aAAeiE,EAASla,IAAIgT,KACrCkH,EAASpJ,OAAOyF,WAAW1a,KAAMqe,GACjCQ,GAAQ,IAMZA,IAEF7e,KAAKwb,KAAKmC,OAASA,EACnB3d,KAAKwb,KAAKqC,MAAQ7d,KAAK6Z,YAIzB7Z,KAAKmI,OAAOzB,gBAAgBC,GAE5BoC,EAAMQ,kBAQRtF,EAAKtC,UAAU4b,WAAa,SAAUxU,GACpC,GAAI3D,IACFG,KAAQvF,KACRgW,YAAehW,KAAKwb,KAAKxF,YACzBE,WAAclW,KAAKwb,KAAKtF,WACxBC,UAAanW,KAAKiV,OAClBmB,SAAYpW,KAAKiV,OAAOlE,OAAON,QAAQzQ,QAEpCoF,EAAO4Q,aAAe5Q,EAAO+Q,WAC7B/Q,EAAO8Q,YAAc9Q,EAAOgR,WAE/BpW,KAAKmI,OAAO7B,UAAU,WAAYlB,GAGpC6D,SAASwU,KAAK5Q,MAAM6Q,OAAS1d,KAAKwb,KAAKgC,UACvCxd,KAAKmI,OAAO/D,YAAYqQ,eACjBzU,MAAKwb,KAERxb,KAAKod,YACPrc,EAAKiT,oBAAoB/K,SAAU,YAAajJ,KAAKod,iBAC9Cpd,MAAKod,WACVpd,KAAKsd,UACPvc,EAAKiT,oBAAoB/K,SAAU,UAAWjJ,KAAKsd,eAC5Ctd,MAAKsd,SAIdtd,KAAKmI,OAAOV,iBAEZsB,EAAMQ,kBASRtF,EAAKtC,UAAUyd,WAAa,SAAU7Z,GAEpC,IADA,GAAI8Z,GAAIrf,KAAKiV,OACNoK,GAAG,CACR,GAAIA,GAAK9Z,EACP,OAAO,CAET8Z,GAAIA,EAAEpK,OAGR,OAAO,GAQThR,EAAKtC,UAAU2d,gBAAkB,WAC/B,MAAOrW,UAASC,cAAc,QAQhCjF,EAAKtC,UAAUyS,aAAe,SAAUD,GAClCnU,KAAKmE,IAAIgT,KACXnX,KAAKmE,IAAIgT,GAAGhO,UAAagL,EAAY,YAAc,GAE/CnU,KAAKyV,QACPzV,KAAKyV,OAAOrB,aAAaD,GAGvBnU,KAAK+Q,QACP/Q,KAAK+Q,OAAO4I,QAAQ,SAAUzI,GAC5BA,EAAMkD,aAAaD,OAW3BlQ,EAAKtC,UAAUoT,YAAc,SAAUzP,GACrCtF,KAAKsF,MAAQA,EACbtF,KAAKsY,aAOPrU,EAAKtC,UAAUmE,YAAc,SAAUT,GACrCrF,KAAKqF,MAAQA,EACbrF,KAAKsY,aAaPrU,EAAKtC,UAAU2W,UAAY,SAAUpX,GAEnC,GAAIqe,GAAUvf,KAAKmE,IAAI8Y,IACnBsC,KACFA,EAAQ1S,MAAM2S,WAA+B,GAAlBxf,KAAK6Z,WAAkB,KAIpD,IAAI8C,GAAW3c,KAAKmE,IAAIkB,KACxB,IAAIsX,EAAU,CACR3c,KAAK+Y,eAEP4D,EAAS8C,gBAAkBzf,KAAKiZ,SAAS5T,MACzCsX,EAAS/O,YAAa,EACtB+O,EAASxT,UAAY,SAIrBwT,EAASxT,UAAY,UAGvB,IAAI9D,EAEFA,GADgBxB,QAAd7D,KAAK2Q,MACC3Q,KAAK2Q,MAEQ9M,QAAd7D,KAAKqF,MACJrF,KAAKqF,MAENrF,KAAKsa,aACJta,KAAKiL,KAGL,GAEV0R,EAASjE,UAAY1Y,KAAK0f,YAAYra,GAIxC,GAAIgX,GAAWrc,KAAKmE,IAAImB,KACxB,IAAI+W,EAAU,CACZ,GAAIK,GAAQ1c,KAAK+Q,OAAS/Q,KAAK+Q,OAAOvP,OAAS,CAE7C6a,GAAS3D,UADM,SAAb1Y,KAAKiL,KACc,IAAMyR,EAAQ,IAEf,UAAb1c,KAAKiL,KACS,IAAMyR,EAAQ,IAGd1c,KAAK0f,YAAY1f,KAAKsF,OAK/CtF,KAAKib,kBACLjb,KAAKob,kBAGDla,GAAoC,GAAzBA,EAAQuZ,eAErBza,KAAK2f,oBAGHze,GAA8B,GAAnBA,EAAQuE,SAEjBzF,KAAK+Q,QACP/Q,KAAK+Q,OAAO4I,QAAQ,SAAUzI,GAC5BA,EAAMoH,UAAUpX,KAMlBlB,KAAKyV,QACPzV,KAAKyV,OAAO6C,aAUhBrU,EAAKtC,UAAUge,kBAAoB,WACjC,GAAItD,GAAWrc,KAAKmE,IAAImB,MACpByL,EAAS/Q,KAAK+Q,MACdsL,IAAYtL,IACG,SAAb/Q,KAAKiL,KACP8F,EAAO4I,QAAQ,SAAUzI,EAAOP,GAC9BO,EAAMP,MAAQA,CACd,IAAI8I,GAAavI,EAAM/M,IAAIkB,KACvBoU,KACFA,EAAWf,UAAY/H,KAIP,UAAb3Q,KAAKiL,MACZ8F,EAAO4I,QAAQ,SAAUzI,GACJrN,QAAfqN,EAAMP,cACDO,GAAMP,MAEM9M,QAAfqN,EAAM7L,QACR6L,EAAM7L,MAAQ,SAY1BpB,EAAKtC,UAAUie,gBAAkB,WAC/B,GAAIvD,EA+BJ,OA7BiB,SAAbrc,KAAKiL,MACPoR,EAAWpT,SAASC,cAAc,OAClCmT,EAASlT,UAAY,WACrBkT,EAAS3D,UAAY,SAED,UAAb1Y,KAAKiL,MACZoR,EAAWpT,SAASC,cAAc,OAClCmT,EAASlT,UAAY,WACrBkT,EAAS3D,UAAY,UAGhB1Y,KAAKiZ,SAAS3T,OAASvE,EAAK0O,MAAMzP,KAAKsF,QAE1C+W,EAAWpT,SAASC,cAAc,KAClCmT,EAASlT,UAAY,QACrBkT,EAAS7O,KAAOxN,KAAKsF,MACrB+W,EAAShT,OAAS,SAClBgT,EAAS3D,UAAY1Y,KAAK0f,YAAY1f,KAAKsF,SAI3C+W,EAAWpT,SAASC,cAAc,OAClCmT,EAASoD,gBAAkBzf,KAAKiZ,SAAS3T,MACzC+W,EAASzO,YAAa,EACtByO,EAASlT,UAAY,QACrBkT,EAAS3D,UAAY1Y,KAAK0f,YAAY1f,KAAKsF,QAIxC+W,GAQTpY,EAAKtC,UAAUke,uBAAyB,WAEtC,GAAIna,GAASuD,SAASC,cAAc,SAYpC,OAXIlJ,MAAKsa,cACP5U,EAAOyD,UAAYnJ,KAAK6Y,SAAW,WAAa,YAChDnT,EAAO4E,MACH,wGAIJ5E,EAAOyD,UAAY,YACnBzD,EAAO4E,MAAQ,IAGV5E,GASTzB,EAAKtC,UAAUub,eAAiB,WAC9B,GAAI/Y,GAAMnE,KAAKmE,IACXob,EAAUtW,SAASC,cAAc,SACjClD,EAAQiD,SAASC,cAAc,QACnCqW,GAAQ1S,MAAMiT,eAAiB,WAC/BP,EAAQpW,UAAY,SACpBoW,EAAQ5Z,YAAYK,EACpB,IAAImR,GAAKlO,SAASC,cAAc,KAChClD,GAAML,YAAYwR,EAGlB,IAAI4I,GAAW9W,SAASC,cAAc,KACtC6W,GAAS5W,UAAY,OACrBgO,EAAGxR,YAAYoa,GACf5b,EAAIuB,OAAS1F,KAAK6f,yBAClBE,EAASpa,YAAYxB,EAAIuB,QACzBvB,EAAI4b,SAAWA,CAGf,IAAI/C,GAAU/T,SAASC,cAAc,KACrC8T,GAAQ7T,UAAY,OACpBgO,EAAGxR,YAAYqX,GACf7Y,EAAIkB,MAAQrF,KAAKsf,kBACjBtC,EAAQrX,YAAYxB,EAAIkB,OACxBlB,EAAI6Y,QAAUA,CAGd,IAAIgD,GAAc/W,SAASC,cAAc,KACzC8W,GAAY7W,UAAY,OACxBgO,EAAGxR,YAAYqa,GACE,UAAbhgB,KAAKiL,MAAiC,SAAbjL,KAAKiL,OAChC+U,EAAYra,YAAYsD,SAASsE,eAAe,MAChDyS,EAAY7W,UAAY,aAE1BhF,EAAI6b,YAAcA,CAGlB,IAAIC,GAAUhX,SAASC,cAAc,KAOrC,OANA+W,GAAQ9W,UAAY,OACpBgO,EAAGxR,YAAYsa,GACf9b,EAAImB,MAAQtF,KAAK4f,kBACjBK,EAAQta,YAAYxB,EAAImB,OACxBnB,EAAI8b,QAAUA,EAEPV,GAOTtb,EAAKtC,UAAUmH,QAAU,SAAUC,GACjC,GAIIhE,GAJAkG,EAAOlC,EAAMkC,KACb5B,EAASN,EAAMM,QAAUN,EAAMmX,WAC/B/b,EAAMnE,KAAKmE,IACXoB,EAAOvF,KAEPmgB,EAAangB,KAAKsa,YAmBtB,KAfIjR,GAAUlF,EAAIqX,MAAQnS,GAAUlF,EAAIkG,QAC1B,aAARY,EACFjL,KAAKmI,OAAO/D,YAAY+P,UAAUnU,MAEnB,YAARiL,GACPjL,KAAKmI,OAAO/D,YAAYkQ,eAKhB,aAARrJ,GAAuB5B,GAAUlF,EAAIqX,MACvCxb,KAAKmd,aAAapU,GAIR,SAARkC,GAAmB5B,GAAUlF,EAAIkG,KAAM,CACzC,GAAIjG,GAAcmB,EAAK4C,OAAO/D,WAC9BA,GAAY+P,UAAU5O,GACtBnB,EAAYoQ,OACZzT,EAAKuP,aAAanM,EAAIkG,KAAM,YAC5BrK,KAAKogB,gBAAgBjc,EAAIkG,KAAM,WAC7BtJ,EAAK2P,gBAAgBvM,EAAIkG,KAAM,YAC/BjG,EAAYqQ,SACZrQ,EAAYkQ,gBAKhB,GAAY,SAARrJ,GAAmB5B,GAAUlF,EAAIuB,QAC/Bya,EAAY,CACd,GAAI1a,GAAUsD,EAAMwC,OACpBvL,MAAKqgB,UAAU5a,GAKnB,GAAI4W,GAAWlY,EAAImB,KACnB,IAAI+D,GAAUgT,EAEZ,OAAQpR,GACN,IAAK,QACHlG,EAAY/E,IACZ,MAEF,KAAK,OACL,IAAK,SACHA,KAAK4Z,cAAa,GAClB5Z,KAAKob,kBACDpb,KAAKsF,QACP+W,EAAS3D,UAAY1Y,KAAK0f,YAAY1f,KAAKsF,OAE7C,MAEF,KAAK,QACHtF,KAAK4Z,cAAa,GAClB5Z,KAAKob,iBACL,MAEF,KAAK,UACL,IAAK,YACHpb,KAAKmI,OAAO9D,UAAYrE,KAAKmI,OAAOJ,cACpC,MAEF,KAAK,SACCgB,EAAMwC,UAAYvL,KAAKiZ,SAAS3T,QAC9BvE,EAAK0O,MAAMzP,KAAKsF,QAClBmI,OAAOC,KAAK1N,KAAKsF,MAAO,SAG5B,MAEF,KAAK,QACHtF,KAAK4Z,cAAa,GAClB5Z,KAAKob,iBACL,MAEF,KAAK,MACL,IAAK,QACHvS,WAAW,WACTtD,EAAKqU,cAAa,GAClBrU,EAAK6V,mBACJ,GAMT,GAAIuB,GAAWxY,EAAIkB,KACnB,IAAIgE,GAAUsT,EACZ,OAAQ1R,GACN,IAAK,QACHlG,EAAY/E,IACZ,MAEF,KAAK,OACL,IAAK,SACHA,KAAKsZ,cAAa,GAClBtZ,KAAKib,kBACDjb,KAAKqF,QACPsX,EAASjE,UAAY1Y,KAAK0f,YAAY1f,KAAKqF,OAE7C,MAEF,KAAK,QACHrF,KAAKsZ,cAAa,GAClBtZ,KAAKib,iBACL,MAEF,KAAK,UACL,IAAK,YACHjb,KAAKmI,OAAO9D,UAAYrE,KAAKmI,OAAOJ,cACpC,MAEF,KAAK,QACH/H,KAAKsZ,cAAa,GAClBtZ,KAAKib,iBACL,MAEF,KAAK,MACL,IAAK,QACHpS,WAAW,WACTtD,EAAK+T,cAAa,GAClB/T,EAAK0V,mBACJ,GAOT,GAAIsE,GAAUpb,EAAI8Y,IAClB,IAAI5T,GAAUkW,EAAQ5a,WACpB,OAAQsG,GACN,IAAK,QACH,GAAIiF,GAAyBrM,QAAjBkF,EAAMuX,QACbvX,EAAMuX,QAAkC,IAAvBtgB,KAAK6Z,WAAa,GACnC9Q,EAAM6U,MAAQ7c,EAAK+O,gBAAgB3L,EAAI6b,YACxC9P,IAAQiQ,EAENxD,IACF5b,EAAKyQ,wBAAwBmL,GAC7BA,EAAS7U,SAIPuU,IACFtb,EAAKyQ,wBAAwB6K,GAC7BA,EAASvU,SAMnB,GAAKuB,GAAUlF,EAAI4b,WAAaI,GAAe9W,GAAUlF,EAAI6Y,SACzD3T,GAAUlF,EAAI6b,YAChB,OAAQ/U,GACN,IAAK,QACC0R,IACF5b,EAAKyQ,wBAAwBmL,GAC7BA,EAAS7U,SAML,WAARmD,GACFjL,KAAKugB,UAAUxX,IAQnB9E,EAAKtC,UAAU4e,UAAY,SAAUxX,GACnC,GAMImP,GAAUsI,EAAUC,EAASC,EAN7BtV,EAASrC,EAAMsC,OAAStC,EAAMuC,QAC9BjC,EAASN,EAAMM,QAAUN,EAAMmX,WAC/B3U,EAAUxC,EAAMwC,QAChBC,EAAWzC,EAAMyC,SACjBmV,EAAS5X,EAAM4X,OACflV,GAAU,EAEVwN,EAAwC,SAA7BjZ,KAAKmI,OAAOjH,QAAQU,IAGnC,IAAc,IAAVwJ,GACF,GAAI/B,GAAUrJ,KAAKmE,IAAImB,QAChBtF,KAAKiZ,SAAS3T,OAASyD,EAAMwC,UAC5BxK,EAAK0O,MAAMzP,KAAKsF,SAClBmI,OAAOC,KAAK1N,KAAKsF,MAAO,UACxBmG,GAAU,OAIX,IAAIpC,GAAUrJ,KAAKmE,IAAIuB,OAAQ,CAClC,GAAIya,GAAangB,KAAKsa,YACtB,IAAI6F,EAAY,CACd,GAAI1a,GAAUsD,EAAMwC,OACpBvL,MAAKqgB,UAAU5a,GACf4D,EAAOvB,QACP2D,GAAU,QAIX,IAAc,IAAVL,EACHG,GAAW0N,IACbjZ,KAAK4gB,eACLnV,GAAU,OAGT,IAAc,IAAVL,EACHG,IACFvL,KAAKqgB,UAAU7U,GACfnC,EAAOvB,QACP2D,GAAU,OAGT,IAAc,IAAVL,GAAgB6N,EACnB1N,IACFvL,KAAKogB,gBAAgB/W,GACrBoC,GAAU,OAGT,IAAc,IAAVL,GAAgB6N,EACnB1N,IACFvL,KAAK6gB,YACLpV,GAAU,OAGT,IAAc,IAAVL,GAAgB6N,EACnB1N,IAAYC,GACdxL,KAAK8gB,kBACLrV,GAAU,GAEHF,GAAWC,IAClBxL,KAAK+gB,iBACLtV,GAAU,OAGT,IAAc,IAAVL,GACP,GAAIuV,EAAQ,CAEV,GAAIK,GAAWhhB,KAAKihB,WAChBD,IACFA,EAASlZ,MAAM7D,EAAKqX,cAAgBtb,KAAKkhB,gBAAgB7X,IAE3DoC,GAAU,OAGT,IAAc,IAAVL,GACP,GAAIuV,EAAQ,CAEV,GAAIQ,GAAYnhB,KAAKohB,YACjBD,IACFA,EAAUrZ,MAAM7D,EAAKqX,cAAgBtb,KAAKkhB,gBAAgB7X,IAE5DoC,GAAU,OAGT,IAAc,IAAVL,GACP,GAAIuV,IAAWnV,EAAU,CAEvB,GAAI6V,GAAcrhB,KAAKshB,iBAAiBjY,EACpCgY,IACFrhB,KAAK8H,MAAM9H,KAAKkhB,gBAAgBG,IAElC5V,GAAU,MAEP,IAAIkV,GAAUnV,GAAYyN,EAAU,CACvC,GAAIjZ,KAAK6Y,SAAU,CACjB,GAAI0I,GAAYvhB,KAAKka,WACrBuG,GAAUc,EAAYA,EAAUnH,YAAcvW,WAE3C,CACH,GAAIM,GAAMnE,KAAKiG,QACfwa,GAAUtc,EAAIiW,YAEZqG,IACFD,EAAWvc,EAAKkH,kBAAkBsV,GAClCC,EAAWD,EAAQrG,YACnBoH,EAAYvd,EAAKkH,kBAAkBuV,GAC/BF,GAAYA,YAAoB5F,IACD,GAA7B5a,KAAKiV,OAAOlE,OAAOvP,QACrBggB,GAAaA,EAAUvM,SACzBuM,EAAUvM,OAAOyF,WAAW1a,KAAMwhB,GAClCxhB,KAAK8H,MAAM7D,EAAKqX,cAAgBtb,KAAKkhB,gBAAgB7X,WAKxD,IAAc,IAAV+B,EACHuV,IAAWnV,GAEb0M,EAAWlY,KAAKyhB,gBACZvJ,GACFA,EAASpQ,MAAM7D,EAAKqX,cAAgBtb,KAAKkhB,gBAAgB7X,IAE3DoC,GAAU,GAEHkV,GAAUnV,IAEjB0M,EAAWlY,KAAKyhB,gBACZvJ,GAAYA,EAASjD,SACvBiD,EAASjD,OAAOyF,WAAW1a,KAAMkY,GACjClY,KAAK8H,MAAM7D,EAAKqX,cAAgBtb,KAAKkhB,gBAAgB7X,KAEvDoC,GAAU,OAGT,IAAc,IAAVL,GACP,GAAIuV,IAAWnV,EAAU,CAEvB,GAAIkW,GAAc1hB,KAAK2hB,aAAatY,EAChCqY,IACF1hB,KAAK8H,MAAM9H,KAAKkhB,gBAAgBQ,IAElCjW,GAAU,MAEP,IAAIkV,GAAUnV,EAAU,CAC3BrH,EAAMnE,KAAKiG,QACX,IAAI2b,GAAUzd,EAAI4a,eACd6C,KACF1J,EAAWjU,EAAKkH,kBAAkByW,GAC9B1J,GAAYA,EAASjD,QACpBiD,YAAoB0C,KACjB1C,EAAS2J,cACf3J,EAASjD,OAAOyF,WAAW1a,KAAMkY,GACjClY,KAAK8H,MAAM7D,EAAKqX,cAAgBtb,KAAKkhB,gBAAgB7X,WAKxD,IAAc,IAAV+B,EACP,GAAIuV,IAAWnV,EAEbgV,EAAWxgB,KAAK8hB,YACZtB,GACFA,EAAS1Y,MAAM7D,EAAKqX,cAAgBtb,KAAKkhB,gBAAgB7X,IAE3DoC,GAAU,MAEP,IAAIkV,GAAUnV,GAAYyN,EAAU,CAGrCuH,EADExgB,KAAK6Y,SACI7Y,KAAKyV,OAASzV,KAAKyV,OAAOqM,YAAcje,OAGxC7D,KAAK8hB,YAElBrB,EAAUD,EAAWA,EAASva,SAAWpC,OAEvC6c,EAD+B,GAA7B1gB,KAAKiV,OAAOlE,OAAOvP,OACVif,EAGAA,EAAUA,EAAQrG,YAAcvW,MAE7C,IAAI2d,GAAYvd,EAAKkH,kBAAkBuV,EACnCc,IAAaA,EAAUvM,SACzBuM,EAAUvM,OAAOyF,WAAW1a,KAAMwhB,GAClCxhB,KAAK8H,MAAM7D,EAAKqX,cAAgBtb,KAAKkhB,gBAAgB7X,KAEvDoC,GAAU,EAIVA,IACF1C,EAAMQ,iBACNR,EAAM+C,oBASV7H,EAAKtC,UAAU0e,UAAY,SAAU5a,GACnC,GAAIA,EAAS,CAEX,GAAIN,GAAQnF,KAAKmE,IAAIgT,GAAGxS,WACpBD,EAAQS,EAAMR,WACd0C,EAAY3C,EAAM2C,SACtB3C,GAAME,YAAYO,GAGhBnF,KAAK6Y,SACP7Y,KAAK+F,SAASN,GAGdzF,KAAK0F,OAAOD,GAGVA,IAEFf,EAAMiB,YAAYR,GAClBT,EAAM2C,UAAYA,IAQtBpD,EAAKtC,UAAUkf,UAAY,WACzB7gB,KAAKmI,OAAO/D,YAAYkQ,aACxB,IAAIvD,GAAS/Q,KAAKiV,OAAOlE,OACrBJ,EAAQI,EAAON,QAAQzQ,MAGvB8W,EAAe9W,KAAKmI,OAAOJ,cAC3BgJ,GAAOJ,EAAQ,GACjBI,EAAOJ,EAAQ,GAAG7I,QAEXiJ,EAAOJ,EAAQ,GACtBI,EAAOJ,EAAQ,GAAG7I,QAGlB9H,KAAKiV,OAAOnN,OAEd,IAAIiP,GAAe/W,KAAKmI,OAAOJ,cAG/B/H,MAAKiV,OAAO8G,QAAQ/b,MAGpBA,KAAKmI,OAAO7B,UAAU,cACpBf,KAAMvF,KACNiV,OAAQjV,KAAKiV,OACbtE,MAAOA,EACPmG,aAAcA,EACdC,aAAcA,KAQlB9S,EAAKtC,UAAUif,aAAe,WAC5B,GAAI9J,GAAe9W,KAAKmI,OAAOJ,eAC3B4N,EAAQ3V,KAAKiV,OAAOyG,WAAW1b,KACnC2V,GAAM7N,OACN,IAAIiP,GAAe/W,KAAKmI,OAAOJ,cAE/B/H,MAAKmI,OAAO7B,UAAU,iBACpBf,KAAMvF,KACN2V,MAAOA,EACPV,OAAQjV,KAAKiV,OACb6B,aAAcA,EACdC,aAAcA,KAWlB9S,EAAKtC,UAAUmf,gBAAkB,SAAUzb,EAAOC,EAAO2F,GACvD,GAAI6L,GAAe9W,KAAKmI,OAAOJ,eAE3Bga,EAAU,GAAI9d,GAAKjE,KAAKmI,QAC1B9C,MAAiBxB,QAATwB,EAAsBA,EAAQ,GACtCC,MAAiBzB,QAATyB,EAAsBA,EAAQ,GACtC2F,KAAMA,GAER8W,GAAQrc,QAAO,GACf1F,KAAKiV,OAAOE,aAAa4M,EAAS/hB,MAClCA,KAAKmI,OAAO/D,YAAYkQ,cACxByN,EAAQja,MAAM,QACd,IAAIiP,GAAe/W,KAAKmI,OAAOJ,cAE/B/H,MAAKmI,OAAO7B,UAAU,oBACpBf,KAAMwc,EACN3M,WAAYpV,KACZiV,OAAQjV,KAAKiV,OACb6B,aAAcA,EACdC,aAAcA,KAWlB9S,EAAKtC,UAAUof,eAAiB,SAAU1b,EAAOC,EAAO2F,GACtD,GAAI6L,GAAe9W,KAAKmI,OAAOJ,eAE3Bga,EAAU,GAAI9d,GAAKjE,KAAKmI,QAC1B9C,MAAiBxB,QAATwB,EAAsBA,EAAQ,GACtCC,MAAiBzB,QAATyB,EAAsBA,EAAQ,GACtC2F,KAAMA,GAER8W,GAAQrc,QAAO,GACf1F,KAAKiV,OAAOK,YAAYyM,EAAS/hB,MACjCA,KAAKmI,OAAO/D,YAAYkQ,cACxByN,EAAQja,MAAM,QACd,IAAIiP,GAAe/W,KAAKmI,OAAOJ,cAE/B/H,MAAKmI,OAAO7B,UAAU,mBACpBf,KAAMwc,EACNxM,UAAWvV,KACXiV,OAAQjV,KAAKiV,OACb6B,aAAcA,EACdC,aAAcA,KAWlB9S,EAAKtC,UAAUqgB,UAAY,SAAU3c,EAAOC,EAAO2F,GACjD,GAAI6L,GAAe9W,KAAKmI,OAAOJ,eAE3Bga,EAAU,GAAI9d,GAAKjE,KAAKmI,QAC1B9C,MAAiBxB,QAATwB,EAAsBA,EAAQ,GACtCC,MAAiBzB,QAATyB,EAAsBA,EAAQ,GACtC2F,KAAMA,GAER8W,GAAQrc,QAAO,GACf1F,KAAKiV,OAAOtP,YAAYoc,GACxB/hB,KAAKmI,OAAO/D,YAAYkQ,cACxByN,EAAQja,MAAM,QACd,IAAIiP,GAAe/W,KAAKmI,OAAOJ,cAE/B/H,MAAKmI,OAAO7B,UAAU,cACpBf,KAAMwc,EACN9M,OAAQjV,KAAKiV,OACb6B,aAAcA,EACdC,aAAcA,KASlB9S,EAAKtC,UAAUsgB,cAAgB,SAAUnM,GACvC,GAAID,GAAU7V,KAAKiL,IACnB,IAAI6K,GAAWD,EAAS,CACtB,GAAIiB,GAAe9W,KAAKmI,OAAOJ,cAC/B/H,MAAK4V,WAAWE,EAChB,IAAIiB,GAAe/W,KAAKmI,OAAOJ,cAE/B/H,MAAKmI,OAAO7B,UAAU,cACpBf,KAAMvF,KACN6V,QAASA,EACTC,QAASA,EACTgB,aAAcA,EACdC,aAAcA,MAWpB9S,EAAKtC,UAAUugB,QAAU,SAAUC,GACjC,GAAIniB,KAAKsa,aAAc,CACrB,GAAI8H,GAAsB,QAAbD,EAAuB,GAAK,EACrC1e,EAAqB,SAAbzD,KAAKiL,KAAmB,QAAS,OAC7CjL,MAAKsW,YAEL,IAAIE,GAAYxW,KAAK+Q,OACjBwF,EAAUvW,KAAKqW,IAGnBrW,MAAK+Q,OAAS/Q,KAAK+Q,OAAOoK,SAG1Bnb,KAAK+Q,OAAOsF,KAAK,SAAUpH,EAAGC,GAC5B,MAAID,GAAExL,GAAQyL,EAAEzL,GAAc2e,EAC1BnT,EAAExL,GAAQyL,EAAEzL,IAAe2e,EACxB,IAETpiB,KAAKqW,KAAiB,GAAT+L,EAAc,MAAQ,OAEnCpiB,KAAKmI,OAAO7B,UAAU,QACpBf,KAAMvF,KACNwW,UAAWA,EACXD,QAASA,EACTI,UAAW3W,KAAK+Q,OAChB2F,QAAS1W,KAAKqW,OAGhBrW,KAAKyW,eAQTxS,EAAKtC,UAAUuY,UAAY,WAKzB,MAJKla,MAAKyV,SACRzV,KAAKyV,OAAS,GAAImF,GAAW5a,KAAKmI,QAClCnI,KAAKyV,OAAO2D,UAAUpZ,OAEjBA,KAAKyV,OAAOxP,UASrBhC,EAAKkH,kBAAoB,SAAU9B,GACjC,KAAOA,GAAQ,CACb,GAAIA,EAAO9D,KACT,MAAO8D,GAAO9D,IAEhB8D,GAASA,EAAO1E,WAGlB,MAAOd,SAQTI,EAAKtC,UAAU8f,cAAgB,WAC7B,GAAIvJ,GAAW,KACX/T,EAAMnE,KAAKiG,QACf,IAAI9B,GAAOA,EAAIQ,WAAY,CAEzB,GAAIid,GAAUzd,CACd,GACEyd,GAAUA,EAAQ7C,gBAClB7G,EAAWjU,EAAKkH,kBAAkByW,SAE7BA,GAAY1J,YAAoB0C,KAAe1C,EAAS2J,aAEjE,MAAO3J,IAQTjU,EAAKtC,UAAUmgB,UAAY,WACzB,GAAItB,GAAW,KACXrc,EAAMnE,KAAKiG,QACf,IAAI9B,GAAOA,EAAIQ,WAAY,CAEzB,GAAI8b,GAAUtc,CACd,GACEsc,GAAUA,EAAQrG,YAClBoG,EAAWvc,EAAKkH,kBAAkBsV,SAE7BA,GAAYD,YAAoB5F,KAAe4F,EAASqB,aAGjE,MAAOrB,IAQTvc,EAAKtC,UAAUyf,WAAa,WAC1B,GAAID,GAAY,KACZhd,EAAMnE,KAAKiG,QACf,IAAI9B,GAAOA,EAAIQ,WAAY,CACzB,GAAI0d,GAAWle,EAAIQ,WAAW2N,UAC9B6O,GAAYld,EAAKkH,kBAAkBkX,GAGrC,MAAOlB,IAQTld,EAAKtC,UAAUsf,UAAY,WACzB,GAAID,GAAW,KACX7c,EAAMnE,KAAKiG,QACf,IAAI9B,GAAOA,EAAIQ,WAAY,CACzB,GAAI2d,GAAUne,EAAIQ,WAAW4d,SAE7B,KADAvB,EAAY/c,EAAKkH,kBAAkBmX,GAC5BA,GAAYtB,YAAoBpG,KAAeoG,EAASa,aAC7DS,EAAUA,EAAQvD,gBAClBiC,EAAY/c,EAAKkH,kBAAkBmX,GAGvC,MAAOtB,IAST/c,EAAKtC,UAAU2f,iBAAmB,SAAUvR,GAC1C,GAAI5L,GAAMnE,KAAKmE,GAEf,QAAQ4L,GACN,IAAK5L,GAAImB,MACP,GAAItF,KAAK+Y,cACP,MAAO5U,GAAIkB,KAGf,KAAKlB,GAAIkB,MACP,GAAIrF,KAAKsa,aACP,MAAOnW,GAAIuB,MAGf,KAAKvB,GAAIuB,OACP,MAAOvB,GAAIkG,IACb,KAAKlG,GAAIkG,KACP,GAAIlG,EAAIqX,KACN,MAAOrX,GAAIqX,IAGf,SACE,MAAO,QAUbvX,EAAKtC,UAAUggB,aAAe,SAAU5R,GACtC,GAAI5L,GAAMnE,KAAKmE,GAEf,QAAQ4L,GACN,IAAK5L,GAAIqX,KACP,MAAOrX,GAAIkG,IACb,KAAKlG,GAAIkG,KACP,GAAIrK,KAAKsa,aACP,MAAOnW,GAAIuB,MAGf,KAAKvB,GAAIuB,OACP,GAAI1F,KAAK+Y,cACP,MAAO5U,GAAIkB,KAGf,KAAKlB,GAAIkB,MACP,IAAKrF,KAAKsa,aACR,MAAOnW,GAAImB,KAEf,SACE,MAAO,QAYbrB,EAAKtC,UAAUuf,gBAAkB,SAAUzO,GACzC,GAAItO,GAAMnE,KAAKmE,GACf,KAAK,GAAI3B,KAAQ2B,GACf,GAAIA,EAAIW,eAAetC,IACjB2B,EAAI3B,IAASiQ,EACf,MAAOjQ,EAIb,OAAO,OASTyB,EAAKtC,UAAU2Y,WAAa,WAC1B,MAAoB,SAAbta,KAAKiL,MAAgC,UAAbjL,KAAKiL,MAItChH,EAAKue,aACHC,KAAQ,8HAGRrT,OAAU,+EAEVsT,MAAS,yEAETC,OAAU,oGAWZ1e,EAAKtC,UAAUye,gBAAkB,SAAUwC,EAAQC,GACjD,GAAItd,GAAOvF,KACP8iB,EAAS7e,EAAKue,YACdO,IAgDJ,IA9CI/iB,KAAKiZ,SAAS3T,OAChByd,EAAMtU,MACJvI,KAAM,OACNoE,MAAO,gCACPnB,UAAW,QAAUnJ,KAAKiL,KAC1B+X,UAEI9c,KAAM,OACNiD,UAAW,aACO,QAAbnJ,KAAKiL,KAAiB,YAAc,IACzCX,MAAOwY,EAAOL,KACdQ,MAAO,WACL1d,EAAK0c,cAAc,WAIrB/b,KAAM,QACNiD,UAAW,cACO,SAAbnJ,KAAKiL,KAAkB,YAAc,IAC1CX,MAAOwY,EAAOJ,MACdO,MAAO,WACL1d,EAAK0c,cAAc,YAIrB/b,KAAM,SACNiD,UAAW,eACO,UAAbnJ,KAAKiL,KAAmB,YAAc,IAC3CX,MAAOwY,EAAO1T,OACd6T,MAAO,WACL1d,EAAK0c,cAAc,aAIrB/b,KAAM,SACNiD,UAAW,eACO,UAAbnJ,KAAKiL,KAAmB,YAAc,IAC3CX,MAAOwY,EAAOH,OACdM,MAAO,WACL1d,EAAK0c,cAAc,eAOzBjiB,KAAKsa,aAAc,CACrB,GAAI6H,GAA2B,OAAbniB,KAAKqW,KAAiB,OAAQ,KAChD0M,GAAMtU,MACJvI,KAAM,OACNoE,MAAO,2BAA6BtK,KAAKiL,KACzC9B,UAAW,QAAUgZ,EACrBc,MAAO,WACL1d,EAAK2c,QAAQC,IAEfa,UAEI9c,KAAM,YACNiD,UAAW,WACXmB,MAAO,2BAA6BtK,KAAKiL,KAAO,sBAChDgY,MAAO,WACL1d,EAAK2c,QAAQ,UAIfhc,KAAM,aACNiD,UAAW,YACXmB,MAAO,2BAA6BtK,KAAKiL,KAAM,uBAC/CgY,MAAO,WACL1d,EAAK2c,QAAQ,aAOvB,GAAIliB,KAAKiV,QAAUjV,KAAKiV,OAAOqF,aAAc,CACvCyI,EAAMvhB,QAERuhB,EAAMtU,MACJxD,KAAQ,aAKZ,IAAI8F,GAASxL,EAAK0P,OAAOlE,MACrBxL,IAAQwL,EAAOA,EAAOvP,OAAS,IACjCuhB,EAAMtU,MACJvI,KAAM,SACNoE,MAAO,wEACP4Y,aAAc,8CACd/Z,UAAW,SACX8Z,MAAO,WACL1d,EAAKyc,UAAU,GAAI,GAAI,SAEzBgB,UAEI9c,KAAM,OACNiD,UAAW,YACXmB,MAAOwY,EAAOL,KACdQ,MAAO,WACL1d,EAAKyc,UAAU,GAAI,GAAI,WAIzB9b,KAAM,QACNiD,UAAW,aACXmB,MAAOwY,EAAOJ,MACdO,MAAO,WACL1d,EAAKyc,UAAU,UAIjB9b,KAAM,SACNiD,UAAW,cACXmB,MAAOwY,EAAO1T,OACd6T,MAAO,WACL1d,EAAKyc,UAAU,UAIjB9b,KAAM,SACNiD,UAAW,cACXmB,MAAOwY,EAAOH,OACdM,MAAO,WACL1d,EAAKyc,UAAU,GAAI,GAAI,eAQjCe,EAAMtU,MACJvI,KAAM,SACNoE,MAAO,mEACP4Y,aAAc,8CACd/Z,UAAW,SACX8Z,MAAO,WACL1d,EAAKub,gBAAgB,GAAI,GAAI,SAE/BkC,UAEI9c,KAAM,OACNiD,UAAW,YACXmB,MAAOwY,EAAOL,KACdQ,MAAO,WACL1d,EAAKub,gBAAgB,GAAI,GAAI,WAI/B5a,KAAM,QACNiD,UAAW,aACXmB,MAAOwY,EAAOJ,MACdO,MAAO,WACL1d,EAAKub,gBAAgB,UAIvB5a,KAAM,SACNiD,UAAW,cACXmB,MAAOwY,EAAO1T,OACd6T,MAAO,WACL1d,EAAKub,gBAAgB,UAIvB5a,KAAM,SACNiD,UAAW,cACXmB,MAAOwY,EAAOH,OACdM,MAAO,WACL1d,EAAKub,gBAAgB,GAAI,GAAI,eAMjC9gB,KAAKiZ,SAAS5T,QAEhB0d,EAAMtU,MACJvI,KAAM,YACNoE,MAAO,gCACPnB,UAAW,YACX8Z,MAAO,WACL1d,EAAKqb,kBAKTmC,EAAMtU,MACJvI,KAAM,SACNoE,MAAO,+BACPnB,UAAW,SACX8Z,MAAO,WACL1d,EAAKsb,gBAMb,GAAIxW,GAAO,GAAIsO,GAAYoK,GAAQI,MAAON,GAC1CxY,GAAK+Y,KAAKR,IASZ3e,EAAKtC,UAAU6X,SAAW,SAASlU,GACjC,MAAIA,aAAiB+d,OACZ,QAEL/d,YAAiBsK,QACZ,SAEY,gBAAX,IAA0D,gBAA5B5P,MAAKic,YAAY3W,GAChD,SAGF,QAUTrB,EAAKtC,UAAUsa,YAAc,SAASG,GACpC,GAAIkH,GAAQlH,EAAItB,cACZyI,EAAMnX,OAAOgQ,GACboH,EAAW9P,WAAW0I,EAE1B,OAAW,IAAPA,EACK,GAES,QAATkH,EACA,KAES,QAATA,GACA,EAES,SAATA,GACA,EAECG,MAAMF,IAASE,MAAMD,GAItBpH,EAHAmH,GAaXtf,EAAKtC,UAAU+d,YAAc,SAAUxZ,GACrC,GAAIwd,GAAcrU,OAAOnJ,GACpByI,QAAQ,KAAM,QACdA,QAAQ,KAAM,QACdA,QAAQ,MAAO,WACfA,QAAQ,KAAM,UACdA,QAAQ,KAAM,UAEfxN,EAAOkB,KAAKC,UAAUohB,EAC1B,OAAOviB,GAAKwiB,UAAU,EAAGxiB,EAAKK,OAAS,IASzCyC,EAAKtC,UAAUwa,cAAgB,SAAUyH,GACvC,GAAIziB,GAAO,IAAMnB,KAAK6jB,YAAYD,GAAe,IAC7CF,EAAc3iB,EAAKoB,MAAMhB,EAC7B,OAAOuiB,GACF/U,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,iBAAkB,MAYjC1K,EAAKtC,UAAUkiB,YAAc,SAAU3d,GAIrC,IAFA,GAAI4d,GAAU,GACVtgB,EAAI,EAAGyN,EAAO/K,EAAK1E,OACZyP,EAAJzN,GAAU,CACf,GAAI/C,GAAIyF,EAAKqI,OAAO/K,EACX,OAAL/C,EACFqjB,GAAW,MAEC,MAALrjB,GACPqjB,GAAWrjB,EACX+C,IAEA/C,EAAIyF,EAAKqI,OAAO/K,GACe,IAA3B,aAAaiN,QAAQhQ,KACvBqjB,GAAW,MAEbA,GAAWrjB,GAGXqjB,GADY,KAALrjB,EACI,MAGAA,EAEb+C,IAGF,MAAOsgB,GAIT,IAAIlJ,GAAahC,EAAkB3U,EAEnC,OAAOA,IACPL,MAAMhE,EAASe,KAAiEkD,SAAlCjD,IAAgDf,EAAOD,QAAUgB,KAI5G,SAASf,EAAQD,EAASM,GAE/B,GAAIS,GAA8BC,CAAgCD,IAAgCT,EAAoB,IAAKU,EAAgC,SAAU+X,GASnK,QAASoL,GAAmB5b,EAAQzG,EAAOsiB,GAOzC,QAASC,GAAWriB,GAElBuG,EAAOtG,QAAQD,EAGf,IAAImJ,GAAU5C,EAAOhE,KAAOgE,EAAOhE,IAAI4G,OACnCA,IACFA,EAAQjD,QA6CZ,IAAK,GAxCDoc,IACFC,MACEje,KAAQ,OACRoE,MAAS,6BACT2Y,MAAS,WACPgB,EAAW,UAGfG,MACEle,KAAQ,OACRoE,MAAS,wBACT2Y,MAAS,WACPgB,EAAW,UAGf/d,MACEA,KAAQ,OACRoE,MAAS,8BACT2Y,MAAS,WACPgB,EAAW,UAGfhH,MACE/W,KAAQ,OACRoE,MAAS,wBACT2Y,MAAS,WACPgB,EAAW,UAGfI,MACEne,KAAQ,OACRoE,MAAS,sBACT2Y,MAAS,WACPgB,EAAW,WAMblB,KACKvf,EAAI,EAAGA,EAAI9B,EAAMF,OAAQgC,IAAK,CACrC,GAAI5B,GAAOF,EAAM8B,GACb8gB,EAAOJ,EAAetiB,EAC1B,KAAK0iB,EACH,KAAM,IAAIljB,OAAM,iBAAmBQ,EAAO,IAG5C0iB,GAAKnb,UAAY,cAAiB6a,GAAWpiB,EAAQ,YAAc,IACnEmhB,EAAMtU,KAAK6V,GAIb,GAAIC,GAAcL,EAAeF,EACjC,KAAKO,EACH,KAAM,IAAInjB,OAAM,iBAAmB4iB,EAAU,IAE/C,IAAIQ,GAAeD,EAAYre,KAG3Bue,EAAMxb,SAASC,cAAc,SASjC,OARAub,GAAItb,UAAY,kBAChBsb,EAAI/L,UAAY8L,EAAe,YAC/BC,EAAIna,MAAQ,qBACZma,EAAIrb,QAAU,WACZ,GAAIiB,GAAO,GAAIsO,GAAYoK,EAC3B1Y,GAAK+Y,KAAKqB,IAGLA,EAGT,OACEzhB,OAAQ+gB,IAEVngB,MAAMhE,EAASe,KAAiEkD,SAAlCjD,IAAgDf,EAAOD,QAAUgB,KAK5G,SAASf,EAAQD,EAASM,GAE/B,GAAIS,GAA8BC,CAAgCD,IAAgCT,EAAoB,IAAKU,EAAgC,SAAUG,GAWnK,QAAS4X,GAAaoK,EAAO7hB,GAiC3B,QAASwjB,GAAiBC,EAAMC,EAAU7B,GACxCA,EAAMpJ,QAAQ,SAAU2K,GACtB,GAAiB,aAAbA,EAAKrZ,KAAqB,CAE5B,GAAI4Z,GAAY5b,SAASC,cAAc,MACvC2b,GAAU1b,UAAY,YACtB2b,EAAK7b,SAASC,cAAc,MAC5B4b,EAAGnf,YAAYkf,GACfF,EAAKhf,YAAYmf,OAEd,CACH,GAAIC,MAGAD,EAAK7b,SAASC,cAAc,KAChCyb,GAAKhf,YAAYmf,EAGjB,IAAIE,GAAS/b,SAASC,cAAc,SAepC,IAdA8b,EAAO7b,UAAYmb,EAAKnb,UACxB4b,EAAQC,OAASA,EACbV,EAAKha,QACP0a,EAAO1a,MAAQga,EAAKha,OAElBga,EAAKrB,QACP+B,EAAO5b,QAAU,WACfxC,EAAGyT,OACHiK,EAAKrB,UAGT6B,EAAGnf,YAAYqf,GAGXV,EAAKtB,QAAS,CAEhB,GAAIiC,GAAUhc,SAASC,cAAc,MACrC+b,GAAQ9b,UAAY,OACpB6b,EAAOrf,YAAYsf,GACnBD,EAAOrf,YAAYsD,SAASsE,eAAe+W,EAAKpe,MAEhD,IAAIgf,EACJ,IAAIZ,EAAKrB,MAAO,CAEd+B,EAAO7b,WAAa,UAEpB,IAAIgc,GAAelc,SAASC,cAAc,SAC1C6b,GAAQI,aAAeA,EACvBA,EAAahc,UAAY,SACzBgc,EAAazM,UAAY,6BACzBoM,EAAGnf,YAAYwf,GACXb,EAAKpB,eACPiC,EAAa7a,MAAQga,EAAKpB,cAG5BgC,EAAgBC,MAEb,CAEH,GAAIC,GAAYnc,SAASC,cAAc,MACvCkc,GAAUjc,UAAY,SACtB6b,EAAOrf,YAAYyf,GAEnBF,EAAgBF,EAIlBE,EAAc9b,QAAU,WACtBxC,EAAGye,cAAcN,GACjBG,EAAcpd,QAIhB,IAAIwd,KACJP,GAAQQ,SAAWD,CACnB,IAAIE,GAAKvc,SAASC,cAAc,KAChC6b,GAAQS,GAAKA,EACbA,EAAGrc,UAAY,OACfqc,EAAG3Y,MAAM9F,OAAS,IAClB+d,EAAGnf,YAAY6f,GACfd,EAAgBc,EAAIF,EAAahB,EAAKtB,aAItCgC,GAAOtM,UAAY,2BAA6B4L,EAAKpe,IAGvD0e,GAASnW,KAAKsW,MAtHpB/kB,KAAKmE,MAEL,IAAIyC,GAAK5G,KACLmE,EAAMnE,KAAKmE,GACfnE,MAAK4iB,OAAS/e,OACd7D,KAAK+iB,MAAQA,EACb/iB,KAAKylB,kBACLzlB,KAAKqE,UAAYR,OACjB7D,KAAK0lB,eAAiB7hB,OACtB7D,KAAK6iB,QAAU3hB,EAAUA,EAAQiiB,MAAQtf,MAGzC,IAAIwG,GAAOpB,SAASC,cAAc,MAClCmB,GAAKlB,UAAY,yBACjBhF,EAAIkG,KAAOA,CAGX,IAAIsa,GAAO1b,SAASC,cAAc,KAClCyb,GAAKxb,UAAY,OACjBkB,EAAK1E,YAAYgf,GACjBxgB,EAAIwgB,KAAOA,EACXxgB,EAAI4e,QAGJ,IAAI4C,GAAc1c,SAASC,cAAc,SACzC/E,GAAIwhB,YAAcA,CAClB,IAAIb,GAAK7b,SAASC,cAAc,KAChC4b,GAAGjY,MAAM+Y,SAAW,SACpBd,EAAGjY,MAAM9F,OAAS,IAClB+d,EAAGnf,YAAYggB,GACfhB,EAAKhf,YAAYmf,GA4FjBJ,EAAgBC,EAAM3kB,KAAKmE,IAAI4e,MAAOA,GAKtC/iB,KAAK6lB,UAAY,EACjB9C,EAAMpJ,QAAQ,SAAU2K,GACtB,GAAIvd,GAAqE,IAA3Dgc,EAAMvhB,QAAU8iB,EAAKtB,QAAUsB,EAAKtB,QAAQxhB,OAAS,GACnEoF,GAAGif,UAAYtd,KAAKE,IAAI7B,EAAGif,UAAW9e,KA4S1C,MAnSA4R,GAAYhX,UAAUmkB,mBAAqB,WACzC,GAAIC,MACAnf,EAAK5G,IAiBT,OAhBAA,MAAKmE,IAAI4e,MAAMpJ,QAAQ,SAAU2K,GAC/ByB,EAAQtX,KAAK6V,EAAKU,QACdV,EAAKa,cACPY,EAAQtX,KAAK6V,EAAKa,cAEhBb,EAAKiB,UAAYjB,GAAQ1d,EAAGof,cAC9B1B,EAAKiB,SAAS5L,QAAQ,SAAUsM,GAC9BF,EAAQtX,KAAKwX,EAAQjB,QACjBiB,EAAQd,cACVY,EAAQtX,KAAKwX,EAAQd,kBAOtBY,GAITpN,EAAYuN,YAAcriB,OAM1B8U,EAAYhX,UAAUyhB,KAAO,SAAUR,GACrC5iB,KAAKqa,MAGL,IAAI8L,GAAe1Y,OAAO2Y,YACtBC,EAAgB5Y,OAAO4C,aAAepH,SAAS5B,WAAa,EAC5Dif,EAAeH,EAAeE,EAC9BE,EAAe3D,EAAO9D,aACtB0H,EAAaxmB,KAAK6lB,UAGlB3V,EAAOnP,EAAK+O,gBAAgB8S,GAC5B/b,EAAM9F,EAAK+F,eAAe8b,EACQ0D,GAAlCzf,EAAM0f,EAAeC,GAEvBxmB,KAAKmE,IAAIkG,KAAKwC,MAAMqD,KAAOA,EAAO,KAClClQ,KAAKmE,IAAIkG,KAAKwC,MAAMhG,IAAOA,EAAM0f,EAAgB,KACjDvmB,KAAKmE,IAAIkG,KAAKwC,MAAM5F,OAAS,KAI7BjH,KAAKmE,IAAIkG,KAAKwC,MAAMqD,KAAOA,EAAO,KAClClQ,KAAKmE,IAAIkG,KAAKwC,MAAMhG,IAAM,GAC1B7G,KAAKmE,IAAIkG,KAAKwC,MAAM5F,OAAUkf,EAAetf,EAAO,MAItDoC,SAASwU,KAAK9X,YAAY3F,KAAKmE,IAAIkG,KAGnC,IAAIzD,GAAK5G,KACL2kB,EAAO3kB,KAAKmE,IAAIwgB,IACpB3kB,MAAKylB,eAAegB,UAAY1lB,EAAKmJ,iBACjCjB,SAAU,YAAa,SAAUF,GAE/B,GAAIM,GAASN,EAAMM,MACdA,IAAUsb,GAAU/d,EAAGwY,WAAW/V,EAAQsb,KAC7C/d,EAAGyT,OACHtR,EAAM+C,kBACN/C,EAAMQ,oBAGdvJ,KAAKylB,eAAeiB,WAAa3lB,EAAKmJ,iBAClCjB,SAAU,aAAc,SAAUF,GAEhCA,EAAM+C,kBACN/C,EAAMQ,mBAEZvJ,KAAKylB,eAAekB,QAAU5lB,EAAKmJ,iBAC/BjB,SAAU,UAAW,SAAUF,GAC7BnC,EAAGsE,WAAWnC,KAIpB/I,KAAKqE,UAAYtD,EAAKgH,eACtB/H,KAAK4iB,OAASA,EACd/Z,WAAW,WACTjC,EAAGzC,IAAIwhB,YAAY7d,SAClB,GAEC6Q,EAAYuN,aACdvN,EAAYuN,YAAY7L,OAE1B1B,EAAYuN,YAAclmB,MAM5B2Y,EAAYhX,UAAU0Y,KAAO,WAEvBra,KAAKmE,IAAIkG,KAAK1F,aAChB3E,KAAKmE,IAAIkG,KAAK1F,WAAWC,YAAY5E,KAAKmE,IAAIkG,MAC1CrK,KAAK6iB,SACP7iB,KAAK6iB,UAMT,KAAK,GAAIrgB,KAAQxC,MAAKylB,eACpB,GAAIzlB,KAAKylB,eAAe3gB,eAAetC,GAAO,CAC5C,GAAIokB,GAAK5mB,KAAKylB,eAAejjB,EACzBokB,IACF7lB,EAAKiT,oBAAoB/K,SAAUzG,EAAMokB,SAEpC5mB,MAAKylB,eAAejjB,GAI3BmW,EAAYuN,aAAelmB,OAC7B2Y,EAAYuN,YAAcriB,SAU9B8U,EAAYhX,UAAU0jB,cAAgB,SAAUN,GAC9C,GAAIne,GAAK5G,KACL6mB,EAAkB9B,GAAW/kB,KAAKgmB,aAGlCA,EAAehmB,KAAKgmB,YAcxB,IAbIA,IAEFA,EAAaR,GAAG3Y,MAAM9F,OAAS,IAC/Bif,EAAaR,GAAG3Y,MAAMia,QAAU,GAChCje,WAAW,WACLjC,EAAGof,cAAgBA,IACrBA,EAAaR,GAAG3Y,MAAMka,QAAU,GAChChmB,EAAK2P,gBAAgBsV,EAAaR,GAAG7gB,WAAY,cAElD,KACH3E,KAAKgmB,aAAeniB,SAGjBgjB,EAAgB,CACnB,GAAIrB,GAAKT,EAAQS,EACjBA,GAAG3Y,MAAMka,QAAU,OACnB,EAAavB,EAAGxe,aAChB6B,WAAW,WACLjC,EAAGof,cAAgBjB,IACrBS,EAAG3Y,MAAM9F,OAAiC,GAAvBye,EAAGxU,WAAWxP,OAAe,KAChDgkB,EAAG3Y,MAAMia,QAAU,aAEpB,GACH/lB,EAAKuP,aAAakV,EAAG7gB,WAAY,YACjC3E,KAAKgmB,aAAejB,IASxBpM,EAAYhX,UAAUuJ,WAAa,SAAUnC,GAC3C,GAGIgd,GAASiB,EAAaC,EAAYC,EAHlC7d,EAASN,EAAMM,OACf+B,EAASrC,EAAMsC,MACfI,GAAU,CAGA,KAAVL,GAIEpL,KAAKqE,WACPtD,EAAK4G,aAAa3H,KAAKqE,WAErBrE,KAAK4iB,QACP5iB,KAAK4iB,OAAO9a,QAGd9H,KAAKqa,OAEL5O,GAAU,GAEO,GAAVL,EACFrC,EAAMyC,UAUTua,EAAU/lB,KAAK8lB,qBACfkB,EAAcjB,EAAQtV,QAAQpH,GACX,GAAf2d,IAEFjB,EAAQA,EAAQvkB,OAAS,GAAGsG,QAC5B2D,GAAU,KAdZsa,EAAU/lB,KAAK8lB,qBACfkB,EAAcjB,EAAQtV,QAAQpH,GAC1B2d,GAAejB,EAAQvkB,OAAS,IAElCukB,EAAQ,GAAGje,QACX2D,GAAU,IAaG,IAAVL,GACiB,UAApB/B,EAAOF,YACT4c,EAAU/lB,KAAK8lB,qBACfkB,EAAcjB,EAAQtV,QAAQpH,GAC9B4d,EAAalB,EAAQiB,EAAc,GAC/BC,GACFA,EAAWnf,SAGf2D,GAAU,GAEO,IAAVL,GACP2a,EAAU/lB,KAAK8lB,qBACfkB,EAAcjB,EAAQtV,QAAQpH,GAC9B4d,EAAalB,EAAQiB,EAAc,GAC/BC,GAAsC,UAAxBA,EAAW9d,YAE3B8d,EAAalB,EAAQiB,EAAc,IAEhCC,IAEHA,EAAalB,EAAQA,EAAQvkB,OAAS,IAEpCylB,GACFA,EAAWnf,QAEb2D,GAAU,GAEO,IAAVL,GACP2a,EAAU/lB,KAAK8lB,qBACfkB,EAAcjB,EAAQtV,QAAQpH,GAC9B6d,EAAanB,EAAQiB,EAAc,GAC/BE,GAAsC,UAAxBA,EAAW/d,WAC3B+d,EAAWpf,QAEb2D,GAAU,GAEO,IAAVL,IACP2a,EAAU/lB,KAAK8lB,qBACfkB,EAAcjB,EAAQtV,QAAQpH,GAC9B6d,EAAanB,EAAQiB,EAAc,GAC/BE,GAAsC,UAAxBA,EAAW/d,YAE3B+d,EAAanB,EAAQiB,EAAc,IAEhCE,IAEHA,EAAanB,EAAQ,IAEnBmB,IACFA,EAAWpf,QACX2D,GAAU,GAEZA,GAAU,GAIRA,IACF1C,EAAM+C,kBACN/C,EAAMQ,mBAUVoP,EAAYhX,UAAUyd,WAAa,SAAUlO,EAAO+D,GAElD,IADA,GAAIkS,GAAIjW,EAAMvM,WACPwiB,GAAG,CACR,GAAIA,GAAKlS,EACP,OAAO,CAETkS,GAAIA,EAAExiB,WAGR,OAAO,GAGFgU,GACP/U,MAAMhE,EAASe,KAAiEkD,SAAlCjD,IAAgDf,EAAOD,QAAUgB,KAK5G,SAASf,EAAQD,EAASM,GAE/B,GAAIS,GAA8BC,CAAgCD,IAAgCT,EAAoB,GAAIA,EAAoB,IAAKU,EAAgC,SAAU+X,EAAa5X,GAMxM,QAAS6X,GAAkB3U,GAQzB,QAAS2W,GAAYzS,GAEnBnI,KAAKmI,OAASA,EACdnI,KAAKmE,OA4MP,MAzMAyW,GAAWjZ,UAAY,GAAIsC,GAM3B2W,EAAWjZ,UAAUsE,OAAS,WAE5B,GAAI9B,GAAMnE,KAAKmE,GAEf,IAAIA,EAAIgT,GACN,MAAOhT,GAAIgT,EAGbnX,MAAKgZ,oBAGL,IAAIoO,GAAWne,SAASC,cAAc,KAMtC,IALAke,EAAS7hB,KAAOvF,KAChBmE,EAAIgT,GAAKiQ,EAILpnB,KAAKiZ,SAAS5T,MAAO,CAEvBlB,EAAI0Y,OAAS5T,SAASC,cAAc,KAGpC,IAAI6T,GAAS9T,SAASC,cAAc,KACpC/E,GAAI4Y,OAASA,CACb,IAAI1S,GAAOpB,SAASC,cAAc,SAClCmB,GAAKlB,UAAY,cACjBkB,EAAKC,MAAQ,0CACbnG,EAAIkG,KAAOA,EACX0S,EAAOpX,YAAYxB,EAAIkG,MAIzB,GAAIgd,GAAWpe,SAASC,cAAc,MAClCoe,EAAUre,SAASC,cAAc,MASrC,OARAoe,GAAQ5O,UAAY,UACpB4O,EAAQne,UAAY,WACpBke,EAAS1hB,YAAY2hB,GACrBnjB,EAAIiT,GAAKiQ,EACTljB,EAAI+B,KAAOohB,EAEXtnB,KAAKsY,YAEE8O,GAMTxM,EAAWjZ,UAAU2W,UAAY,WAC/B,GAAInU,GAAMnE,KAAKmE,IACXkjB,EAAWljB,EAAIiT,EACfiQ,KACFA,EAASxa,MAAM0a,YAAiC,GAAlBvnB,KAAK6Z,WAAkB,GAAM,KAI7D,IAAIyN,GAAUnjB,EAAI+B,IACdohB,KACFA,EAAQ5O,UAAY,UAAY1Y,KAAKiV,OAAOhK,KAAO,IAKrD,IAAImc,GAAWjjB,EAAIgT,EACdnX,MAAK6hB,YAYH1d,EAAIgT,GAAG7E,aACNnO,EAAI0Y,QACNuK,EAASzhB,YAAYxB,EAAI0Y,QAEvB1Y,EAAI4Y,QACNqK,EAASzhB,YAAYxB,EAAI4Y,QAE3BqK,EAASzhB,YAAY0hB,IAlBnBljB,EAAIgT,GAAG7E,aACLnO,EAAI0Y,QACNuK,EAASxiB,YAAYT,EAAI0Y,QAEvB1Y,EAAI4Y,QACNqK,EAASxiB,YAAYT,EAAI4Y,QAE3BqK,EAASxiB,YAAYyiB,KAqB3BzM,EAAWjZ,UAAUkgB,UAAY,WAC/B,MAAqC,IAA7B7hB,KAAKiV,OAAOlE,OAAOvP,QAS7BoZ,EAAWjZ,UAAUye,gBAAkB,SAAUwC,EAAQC,GACvD,GAAItd,GAAOvF,KACP8iB,EAAS7e,EAAKue,YACdO,IAGA7c,KAAQ,SACRoE,MAAS,uDACT4Y,aAAgB,8CAChB/Z,UAAa,SACb8Z,MAAS,WACP1d,EAAKyc,UAAU,GAAI,GAAI,SAEzBgB,UAEI9c,KAAQ,OACRiD,UAAa,YACbmB,MAASwY,EAAOL,KAChBQ,MAAS,WACP1d,EAAKyc,UAAU,GAAI,GAAI,WAIzB9b,KAAQ,QACRiD,UAAa,aACbmB,MAASwY,EAAOJ,MAChBO,MAAS,WACP1d,EAAKyc,UAAU,UAIjB9b,KAAQ,SACRiD,UAAa,cACbmB,MAASwY,EAAO1T,OAChB6T,MAAS,WACP1d,EAAKyc,UAAU,UAIjB9b,KAAQ,SACRiD,UAAa,cACbmB,MAASwY,EAAOH,OAChBM,MAAS,WACP1d,EAAKyc,UAAU,GAAI,GAAI,eAO7B3X,EAAO,GAAIsO,GAAYoK,GAAQI,MAAON,GAC1CxY,GAAK+Y,KAAKR,IAOZhI,EAAWjZ,UAAUmH,QAAU,SAAUC,GACvC,GAAIkC,GAAOlC,EAAMkC,KACb5B,EAASN,EAAMM,QAAUN,EAAMmX,WAC/B/b,EAAMnE,KAAKmE,IAGXkG,EAAOlG,EAAIkG,IAWf,IAVIhB,GAAUgB,IACA,aAARY,EACFjL,KAAKmI,OAAO/D,YAAY+P,UAAUnU,KAAKiV,QAExB,YAARhK,GACPjL,KAAKmI,OAAO/D,YAAYkQ,eAKhB,SAARrJ,GAAmB5B,GAAUlF,EAAIkG,KAAM,CACzC,GAAIjG,GAAcpE,KAAKmI,OAAO/D,WAC9BA,GAAY+P,UAAUnU,KAAKiV,QAC3B7Q,EAAYoQ,OACZzT,EAAKuP,aAAanM,EAAIkG,KAAM,YAC5BrK,KAAKogB,gBAAgBjc,EAAIkG,KAAM,WAC7BtJ,EAAK2P,gBAAgBvM,EAAIkG,KAAM,YAC/BjG,EAAYqQ,SACZrQ,EAAYkQ,gBAIJ,WAARrJ,GACFjL,KAAKugB,UAAUxX,IAIZ6R,EAIT,MAAOhC,IACPhV,MAAMhE,EAASe,KAAiEkD,SAAlCjD,IAAgDf,EAAOD,QAAUgB"} \ No newline at end of file diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/jsoneditor.min.css b/data-mgmt/src/main/webapp/bower_components/jsoneditor/jsoneditor.min.css deleted file mode 100644 index 901d2ac..0000000 --- a/data-mgmt/src/main/webapp/bower_components/jsoneditor/jsoneditor.min.css +++ /dev/null @@ -1 +0,0 @@ -.jsoneditor .field,.jsoneditor .readonly,.jsoneditor .value{border:1px solid transparent;min-height:16px;min-width:32px;padding:2px;margin:1px;word-wrap:break-word;float:left}.jsoneditor .field p,.jsoneditor .value p{margin:0}.jsoneditor .value{word-break:break-word}.jsoneditor .readonly{min-width:16px;color:gray}.jsoneditor .empty{border-color:#d3d3d3;border-style:dashed;border-radius:2px}.jsoneditor .field.empty{background-image:url(img/jsoneditor-icons.png);background-position:0 -144px}.jsoneditor .value.empty{background-image:url(img/jsoneditor-icons.png);background-position:-48px -144px}.jsoneditor .value.url{color:green;text-decoration:underline}.jsoneditor a.value.url:focus,.jsoneditor a.value.url:hover{color:red}.jsoneditor .separator{padding:3px 0;vertical-align:top;color:gray}.jsoneditor .field.highlight,.jsoneditor .field[contenteditable=true]:focus,.jsoneditor .field[contenteditable=true]:hover,.jsoneditor .value.highlight,.jsoneditor .value[contenteditable=true]:focus,.jsoneditor .value[contenteditable=true]:hover{background-color:#FFFFAB;border:1px solid #ff0;border-radius:2px}.jsoneditor .field.highlight-active,.jsoneditor .field.highlight-active:focus,.jsoneditor .field.highlight-active:hover,.jsoneditor .value.highlight-active,.jsoneditor .value.highlight-active:focus,.jsoneditor .value.highlight-active:hover{background-color:#fe0;border:1px solid #ffc700;border-radius:2px}.jsoneditor div.tree button{width:24px;height:24px;padding:0;margin:0;border:none;cursor:pointer;background:url(img/jsoneditor-icons.png)}.jsoneditor div.tree button.collapsed{background-position:0 -48px}.jsoneditor div.tree button.expanded{background-position:0 -72px}.jsoneditor div.tree button.contextmenu{background-position:-48px -72px}.jsoneditor div.tree button.contextmenu.selected,.jsoneditor div.tree button.contextmenu:focus,.jsoneditor div.tree button.contextmenu:hover{background-position:-48px -48px}.jsoneditor div.tree :focus{outline:0}.jsoneditor div.tree button:focus{background-color:#f5f5f5;outline:#e5e5e5 solid 1px}.jsoneditor div.tree button.invisible{visibility:hidden;background:0 0}.jsoneditor{color:#1A1A1A;border:1px solid #97B0F8;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;height:100%;overflow:auto;position:relative;padding:0;line-height:100%}.jsoneditor div.tree table.tree{border-collapse:collapse;border-spacing:0;width:100%;margin:0}.jsoneditor div.outer{width:100%;height:100%;margin:-35px 0 0;padding:35px 0 0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.jsoneditor div.tree{width:100%;height:100%;position:relative;overflow:auto}.jsoneditor textarea.text{width:100%;height:100%;margin:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;border:none;background-color:#fff;resize:none}.jsoneditor tr.highlight{background-color:#FFFFAB}.jsoneditor div.tree button.dragarea{background:url(img/jsoneditor-icons.png) -72px -72px;cursor:move}.jsoneditor div.tree button.dragarea:focus,.jsoneditor div.tree button.dragarea:hover{background-position:-72px -48px}.jsoneditor td,.jsoneditor th,.jsoneditor tr{padding:0;margin:0}.jsoneditor td,.jsoneditor td.tree{vertical-align:top}.jsoneditor .field,.jsoneditor .value,.jsoneditor td,.jsoneditor textarea,.jsoneditor th{font-family:droid sans mono,monospace,courier new,courier,sans-serif;font-size:10pt;color:#1A1A1A}.jsoneditor-contextmenu{position:absolute;z-index:99999}.jsoneditor-contextmenu ul{position:relative;left:0;top:0;width:124px;background:#fff;border:1px solid #d3d3d3;box-shadow:2px 2px 12px rgba(128,128,128,.3);list-style:none;margin:0;padding:0}.jsoneditor-contextmenu ul li button{padding:0;margin:0;width:124px;height:24px;border:none;cursor:pointer;color:#4d4d4d;background:0 0;line-height:26px;text-align:left}.jsoneditor-contextmenu ul li button::-moz-focus-inner{padding:0;border:0}.jsoneditor-contextmenu ul li button:focus,.jsoneditor-contextmenu ul li button:hover{color:#1a1a1a;background-color:#f5f5f5;outline:0}.jsoneditor-contextmenu ul li button.default{width:92px}.jsoneditor-contextmenu ul li button.expand{float:right;width:32px;height:24px;border-left:1px solid #e5e5e5}.jsoneditor-contextmenu div.icon{float:left;width:24px;height:24px;border:none;padding:0;margin:0;background-image:url(img/jsoneditor-icons.png)}.jsoneditor-contextmenu ul li button div.expand{float:right;width:24px;height:24px;padding:0;margin:0 4px 0 0;background:url(img/jsoneditor-icons.png) 0 -72px;opacity:.4}.jsoneditor-contextmenu ul li button.expand:focus div.expand,.jsoneditor-contextmenu ul li button.expand:hover div.expand,.jsoneditor-contextmenu ul li button:focus div.expand,.jsoneditor-contextmenu ul li button:hover div.expand,.jsoneditor-contextmenu ul li.selected div.expand{opacity:1}.jsoneditor-contextmenu .separator{height:0;border-top:1px solid #e5e5e5;padding-top:5px;margin-top:5px}.jsoneditor-contextmenu button.remove>.icon{background-position:-24px -24px}.jsoneditor-contextmenu button.remove:focus>.icon,.jsoneditor-contextmenu button.remove:hover>.icon{background-position:-24px 0}.jsoneditor-contextmenu button.append>.icon{background-position:0 -24px}.jsoneditor-contextmenu button.append:focus>.icon,.jsoneditor-contextmenu button.append:hover>.icon{background-position:0 0}.jsoneditor-contextmenu button.insert>.icon{background-position:0 -24px}.jsoneditor-contextmenu button.insert:focus>.icon,.jsoneditor-contextmenu button.insert:hover>.icon{background-position:0 0}.jsoneditor-contextmenu button.duplicate>.icon{background-position:-48px -24px}.jsoneditor-contextmenu button.duplicate:focus>.icon,.jsoneditor-contextmenu button.duplicate:hover>.icon{background-position:-48px 0}.jsoneditor-contextmenu button.sort-asc>.icon{background-position:-168px -24px}.jsoneditor-contextmenu button.sort-asc:focus>.icon,.jsoneditor-contextmenu button.sort-asc:hover>.icon{background-position:-168px 0}.jsoneditor-contextmenu button.sort-desc>.icon{background-position:-192px -24px}.jsoneditor-contextmenu button.sort-desc:focus>.icon,.jsoneditor-contextmenu button.sort-desc:hover>.icon{background-position:-192px 0}.jsoneditor-contextmenu ul li .selected{background-color:#D5DDF6}.jsoneditor-contextmenu ul li{overflow:hidden}.jsoneditor-contextmenu ul li ul{display:none;position:relative;left:-10px;top:0;border:none;box-shadow:inset 0 0 10px rgba(128,128,128,.5);padding:0 10px;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-o-transition:all .3s ease-out;transition:all .3s ease-out}.jsoneditor-contextmenu ul li ul li button{padding-left:24px}.jsoneditor-contextmenu ul li ul li button:focus,.jsoneditor-contextmenu ul li ul li button:hover{background-color:#f5f5f5}.jsoneditor-contextmenu button.type-string>.icon{background-position:-144px -24px}.jsoneditor-contextmenu button.type-string.selected>.icon,.jsoneditor-contextmenu button.type-string:focus>.icon,.jsoneditor-contextmenu button.type-string:hover>.icon{background-position:-144px 0}.jsoneditor-contextmenu button.type-auto>.icon{background-position:-120px -24px}.jsoneditor-contextmenu button.type-auto.selected>.icon,.jsoneditor-contextmenu button.type-auto:focus>.icon,.jsoneditor-contextmenu button.type-auto:hover>.icon{background-position:-120px 0}.jsoneditor-contextmenu button.type-object>.icon{background-position:-72px -24px}.jsoneditor-contextmenu button.type-object.selected>.icon,.jsoneditor-contextmenu button.type-object:focus>.icon,.jsoneditor-contextmenu button.type-object:hover>.icon{background-position:-72px 0}.jsoneditor-contextmenu button.type-array>.icon{background-position:-96px -24px}.jsoneditor-contextmenu button.type-array.selected>.icon,.jsoneditor-contextmenu button.type-array:focus>.icon,.jsoneditor-contextmenu button.type-array:hover>.icon{background-position:-96px 0}.jsoneditor-contextmenu button.type-modes>.icon{background-image:none;width:6px}.jsoneditor .menu{width:100%;height:35px;padding:2px;margin:0;overflow:hidden;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;color:#1A1A1A;background-color:#D5DDF6;border-bottom:1px solid #97B0F8}.jsoneditor .menu button{width:26px;height:26px;margin:2px;padding:0;border-radius:2px;border:1px solid #aec0f8;background:url(img/jsoneditor-icons.png) #e3eaf6;color:#4D4D4D;opacity:.8;font-family:arial,sans-serif;font-size:10pt;float:left}.jsoneditor .menu button:hover{background-color:#f0f2f5}.jsoneditor .menu button:active{background-color:#fff}.jsoneditor .menu button:disabled{background-color:#e3eaf6}.jsoneditor .menu button.collapse-all{background-position:0 -96px}.jsoneditor .menu button.expand-all{background-position:0 -120px}.jsoneditor .menu button.undo{background-position:-24px -96px}.jsoneditor .menu button.undo:disabled{background-position:-24px -120px}.jsoneditor .menu button.redo{background-position:-48px -96px}.jsoneditor .menu button.redo:disabled{background-position:-48px -120px}.jsoneditor .menu button.compact{background-position:-72px -96px}.jsoneditor .menu button.format{background-position:-72px -120px}.jsoneditor .menu button.modes{background-image:none;width:auto;padding-left:6px;padding-right:6px}.jsoneditor .menu button.separator{margin-left:10px}.jsoneditor .menu a{font-family:arial,sans-serif;font-size:10pt;color:#97B0F8;vertical-align:middle}.jsoneditor .menu a:hover{color:red}.jsoneditor .menu a.poweredBy{font-size:8pt;position:absolute;right:0;top:0;padding:10px}.jsoneditor .search .results,.jsoneditor .search input{font-family:arial,sans-serif;font-size:10pt;color:#1A1A1A}.jsoneditor .search{position:absolute;right:2px;top:2px}.jsoneditor .search .frame{border:1px solid #97B0F8;background-color:#fff;padding:0 2px;margin:0}.jsoneditor .search .frame table{border-collapse:collapse}.jsoneditor .search input{width:120px;border:none;outline:0;margin:1px}.jsoneditor .search .results{color:#4d4d4d;padding-right:5px;line-height:24px}.jsoneditor .search button{width:16px;height:24px;padding:0;margin:0;border:none;background:url(img/jsoneditor-icons.png);vertical-align:top}.jsoneditor .search button:hover{background-color:transparent}.jsoneditor .search button.refresh{width:18px;background-position:-99px -73px}.jsoneditor .search button.next{cursor:pointer;background-position:-124px -73px}.jsoneditor .search button.next:hover{background-position:-124px -49px}.jsoneditor .search button.previous{cursor:pointer;background-position:-148px -73px;margin-right:2px}.jsoneditor .search button.previous:hover{background-position:-148px -49px} \ No newline at end of file diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/jsoneditor.min.js b/data-mgmt/src/main/webapp/bower_components/jsoneditor/jsoneditor.min.js deleted file mode 100644 index c9f572a..0000000 --- a/data-mgmt/src/main/webapp/bower_components/jsoneditor/jsoneditor.min.js +++ /dev/null @@ -1,31 +0,0 @@ -/*! - * jsoneditor.js - * - * @brief - * JSONEditor is a web-based tool to view, edit, and format JSON. - * It shows data a clear, editable treeview. - * - * Supported browsers: Chrome, Firefox, Safari, Opera, Internet Explorer 8+ - * - * @license - * 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 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - * - * Copyright (c) 2011-2014 Jos de Jong, http://jsoneditoronline.org - * - * @author Jos de Jong, - * @version 3.1.2 - * @date 2014-09-03 - */ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):"object"==typeof exports?exports.JSONEditor=t():e.JSONEditor=t()}(this,function(){return function(e){function t(n){if(i[n])return i[n].exports;var o=i[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var i={};return t.m=e,t.c=i,t.p="",t(0)}([function(e,t,i){var n,o;n=[i(1),i(2),i(3)],o=function(e,t,i){function n(e,t,o){if(!(this instanceof n))throw new Error('JSONEditor constructor called without "new".');var s=i.getInternetExplorerVersion();if(-1!=s&&9>s)throw new Error("Unsupported browser, IE9 or newer required. Please install the newest version of your browser.");arguments.length&&this._create(e,t,o)}return n.modes={},n.prototype._create=function(e,t,i){this.container=e,this.options=t||{},this.json=i||{};var n=this.options.mode||"tree";this.setMode(n)},n.prototype._delete=function(){},n.prototype.set=function(e){this.json=e},n.prototype.get=function(){return this.json},n.prototype.setText=function(e){this.json=i.parse(e)},n.prototype.getText=function(){return JSON.stringify(this.json)},n.prototype.setName=function(e){this.options||(this.options={}),this.options.name=e},n.prototype.getName=function(){return this.options&&this.options.name},n.prototype.setMode=function(e){var t,o,s=this.container,r=i.extend({},this.options);r.mode=e;var a=n.modes[e];if(!a)throw new Error('Unknown mode "'+r.mode+'"');try{var d="text"==a.data;if(o=this.getName(),t=this[d?"getText":"get"](),this._delete(),i.clear(this),i.extend(this,a.mixin),this.create(s,r),this.setName(o),this[d?"setText":"set"](t),"function"==typeof a.load)try{a.load.call(this)}catch(h){}}catch(h){this._onError(h)}},n.prototype._onError=function(e){if("function"==typeof this.onError&&(i.log("WARNING: JSONEditor.onError is deprecated. Use options.error instead."),this.onError(e)),!this.options||"function"!=typeof this.options.error)throw e;this.options.error(e)},n.registerMode=function(e){var t,o;if(i.isArray(e))for(t=0;te&&i.scrollTop>0?(n+a-e)/3:e>r-a&&o+i.scrollTop3?(i.scrollTop+=o/3,n.animateCallback=t,n.animateTimeout=setTimeout(a,50)):(t&&t(!0),i.scrollTop=r,delete n.animateTimeout,delete n.animateCallback)};a()}else t&&t(!1)},r._createFrame=function(){function e(e){t._onEvent(e)}this.frame=document.createElement("div"),this.frame.className="jsoneditor",this.container.appendChild(this.frame);var t=this;this.frame.onclick=function(t){var i=t.target;e(t),"BUTTON"==i.nodeName&&t.preventDefault()},this.frame.oninput=e,this.frame.onchange=e,this.frame.onkeydown=e,this.frame.onkeyup=e,this.frame.oncut=e,this.frame.onpaste=e,this.frame.onmousedown=e,this.frame.onmouseup=e,this.frame.onmouseover=e,this.frame.onmouseout=e,s.addEventListener(this.frame,"focus",e,!0),s.addEventListener(this.frame,"blur",e,!0),this.frame.onfocusin=e,this.frame.onfocusout=e,this.menu=document.createElement("div"),this.menu.className="menu",this.frame.appendChild(this.menu);var n=document.createElement("button");n.className="expand-all",n.title="Expand all fields",n.onclick=function(){t.expandAll()},this.menu.appendChild(n);var r=document.createElement("button");if(r.title="Collapse all fields",r.className="collapse-all",r.onclick=function(){t.collapseAll()},this.menu.appendChild(r),this.history){var a=document.createElement("button");a.className="undo separator",a.title="Undo last action (Ctrl+Z)",a.onclick=function(){t._onUndo()},this.menu.appendChild(a),this.dom.undo=a;var d=document.createElement("button");d.className="redo",d.title="Redo (Ctrl+Shift+Z)",d.onclick=function(){t._onRedo()},this.menu.appendChild(d),this.dom.redo=d,this.history.onChange=function(){a.disabled=!t.history.canUndo(),d.disabled=!t.history.canRedo()},this.history.onChange()}if(this.options&&this.options.modes&&this.options.modes.length){var h=o.create(this,this.options.modes,this.options.mode);this.menu.appendChild(h),this.dom.modeBox=h}this.options.search&&(this.searchBox=new i(this,this.menu))},r._onUndo=function(){this.history&&(this.history.undo(),this.options.change&&this.options.change())},r._onRedo=function(){this.history&&(this.history.redo(),this.options.change&&this.options.change())},r._onEvent=function(e){var t=e.target;"keydown"==e.type&&this._onKeyDown(e),"focus"==e.type&&(d=t);var i=n.getNodeFromTarget(t);i&&i.onEvent(e)},r._onKeyDown=function(e){var t=e.which||e.keyCode,i=e.ctrlKey,n=e.shiftKey,o=!1;if(9==t&&setTimeout(function(){s.selectContentEditable(d)},0),this.searchBox)if(i&&70==t)this.searchBox.dom.search.focus(),this.searchBox.dom.search.select(),o=!0;else if(114==t||i&&71==t){var r=!0;n?this.searchBox.previous(r):this.searchBox.next(r),o=!0}this.history&&(i&&!n&&90==t?(this._onUndo(),o=!0):i&&n&&90==t&&(this._onRedo(),o=!0)),o&&(e.preventDefault(),e.stopPropagation())},r._createTable=function(){var e=document.createElement("div");e.className="outer",this.contentOuter=e,this.content=document.createElement("div"),this.content.className="tree",e.appendChild(this.content),this.table=document.createElement("table"),this.table.className="tree",this.content.appendChild(this.table);var t;this.colgroupContent=document.createElement("colgroup"),"tree"===this.options.mode&&(t=document.createElement("col"),t.width="24px",this.colgroupContent.appendChild(t)),t=document.createElement("col"),t.width="24px",this.colgroupContent.appendChild(t),t=document.createElement("col"),this.colgroupContent.appendChild(t),this.table.appendChild(this.colgroupContent),this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.frame.appendChild(e)},[{mode:"tree",mixin:r,data:"json"},{mode:"view",mixin:r,data:"json"},{mode:"form",mixin:r,data:"json"}]}.apply(t,n),!(void 0!==o&&(e.exports=o))},function(e,t,i){var n,o;n=[i(8),i(3)],o=function(e,t){var i={};return i.create=function(i,n){n=n||{},this.options=n,this.indentation=n.indentation?Number(n.indentation):2,this.mode="code"==n.mode?"code":"text","code"==this.mode&&"undefined"==typeof ace&&(this.mode="text",t.log("WARNING: Cannot load code editor, Ace library not loaded. Falling back to plain text editor"));var o=this;this.container=i,this.dom={},this.editor=void 0,this.textarea=void 0,this.width=i.clientWidth,this.height=i.clientHeight,this.frame=document.createElement("div"),this.frame.className="jsoneditor",this.frame.onclick=function(e){e.preventDefault()},this.menu=document.createElement("div"),this.menu.className="menu",this.frame.appendChild(this.menu);var s=document.createElement("button");s.className="format",s.title="Format JSON data, with proper indentation and line feeds",this.menu.appendChild(s),s.onclick=function(){try{o.format()}catch(e){o._onError(e)}};var r=document.createElement("button");if(r.className="compact",r.title="Compact JSON data, remove all whitespaces",this.menu.appendChild(r),r.onclick=function(){try{o.compact()}catch(e){o._onError(e)}},this.options&&this.options.modes&&this.options.modes.length){var a=e.create(this,this.options.modes,this.options.mode);this.menu.appendChild(a),this.dom.modeBox=a}if(this.content=document.createElement("div"),this.content.className="outer",this.frame.appendChild(this.content),this.container.appendChild(this.frame),"code"==this.mode){this.editorDom=document.createElement("div"),this.editorDom.style.height="100%",this.editorDom.style.width="100%",this.content.appendChild(this.editorDom);var d=ace.edit(this.editorDom);d.setTheme("ace/theme/jsoneditor"),d.setShowPrintMargin(!1),d.setFontSize(13),d.getSession().setMode("ace/mode/json"),d.getSession().setTabSize(2),d.getSession().setUseSoftTabs(!0),d.getSession().setUseWrapMode(!0),this.editor=d;var h=document.createElement("a");h.appendChild(document.createTextNode("powered by ace")),h.href="http://ace.ajax.org",h.target="_blank",h.className="poweredBy",h.onclick=function(){window.open(h.href,h.target)},this.menu.appendChild(h),n.change&&d.on("change",function(){n.change()})}else{var l=document.createElement("textarea");l.className="text",l.spellcheck=!1,this.content.appendChild(l),this.textarea=l,n.change&&(null===this.textarea.oninput?this.textarea.oninput=function(){n.change()}:this.textarea.onchange=function(){n.change()})}},i._delete=function(){this.frame&&this.container&&this.frame.parentNode==this.container&&this.container.removeChild(this.frame)},i._onError=function(e){if("function"==typeof this.onError&&(t.log("WARNING: JSONEditor.onError is deprecated. Use options.error instead."),this.onError(e)),!this.options||"function"!=typeof this.options.error)throw e;this.options.error(e)},i.compact=function(){var e=t.parse(this.getText());this.setText(JSON.stringify(e))},i.format=function(){var e=t.parse(this.getText());this.setText(JSON.stringify(e,null,this.indentation))},i.focus=function(){this.textarea&&this.textarea.focus(),this.editor&&this.editor.focus()},i.resize=function(){if(this.editor){var e=!1;this.editor.resize(e)}},i.set=function(e){this.setText(JSON.stringify(e,null,this.indentation))},i.get=function(){return t.parse(this.getText())},i.getText=function(){return this.textarea?this.textarea.value:this.editor?this.editor.getValue():""},i.setText=function(e){this.textarea&&(this.textarea.value=e),this.editor&&this.editor.setValue(e,-1)},[{mode:"text",mixin:i,data:"text",load:i.format},{mode:"code",mixin:i,data:"text",load:i.format}]}.apply(t,n),!(void 0!==o&&(e.exports=o))},function(e,t,i){var n;n=function(){var e={};e.parse=function(t){try{return JSON.parse(t)}catch(i){try{return e.parseJS(t)}catch(n){throw e.validate(t),i}}},e.parseJS=function(e){for(var t=[],i=!1,n=0;nn;n++){var s=i[n];s.style&&s.removeAttribute("style");var r=s.attributes;if(r)for(var a=r.length-1;a>=0;a--){var d=r[a];1==d.specified&&s.removeAttribute(d.name)}e.stripFormatting(s)}},e.setEndOfContentEditable=function(e){var t,i;document.createRange&&(t=document.createRange(),t.selectNodeContents(e),t.collapse(!1),i=window.getSelection(),i.removeAllRanges(),i.addRange(t))},e.selectContentEditable=function(e){if(e&&"DIV"==e.nodeName){var t,i;window.getSelection&&document.createRange&&(i=document.createRange(),i.selectNodeContents(e),t=window.getSelection(),t.removeAllRanges(),t.addRange(i))}},e.getSelection=function(){if(window.getSelection){var e=window.getSelection();if(e.getRangeAt&&e.rangeCount)return e.getRangeAt(0)}return null},e.setSelection=function(e){if(e&&window.getSelection){var t=window.getSelection();t.removeAllRanges(),t.addRange(e)}},e.getSelectionOffset=function(){var t=e.getSelection();return t&&"startOffset"in t&&"endOffset"in t&&t.startContainer&&t.startContainer==t.endContainer?{startOffset:t.startOffset,endOffset:t.endOffset,container:t.startContainer.parentNode}:null},e.setSelectionOffset=function(t){if(document.createRange&&window.getSelection){var i=window.getSelection();if(i){var n=document.createRange();n.setStart(t.container.firstChild,t.startOffset),n.setEnd(t.container.firstChild,t.endOffset),e.setSelection(n)}}},e.getInnerText=function(t,i){var n=void 0==i;if(n&&(i={text:"",flush:function(){var e=this.text;return this.text="",e},set:function(e){this.text=e}}),t.nodeValue)return i.flush()+t.nodeValue;if(t.hasChildNodes()){for(var o=t.childNodes,s="",r=0,a=o.length;a>r;r++){var d=o[r];if("DIV"==d.nodeName||"P"==d.nodeName){var h=o[r-1],l=h?h.nodeName:void 0;l&&"DIV"!=l&&"P"!=l&&"BR"!=l&&(s+="\n",i.flush()),s+=e.getInnerText(d,i),i.set("\n")}else"BR"==d.nodeName?(s+=i.flush(),i.set("\n")):s+=e.getInnerText(d,i)}return s}return"P"==t.nodeName&&-1!=e.getInternetExplorerVersion()?i.flush():""},e.getInternetExplorerVersion=function(){if(-1==i){var e=-1;if("Microsoft Internet Explorer"==navigator.appName){var t=navigator.userAgent,n=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");null!=n.exec(t)&&(e=parseFloat(RegExp.$1))}i=e}return i},e.isFirefox=function(){return-1!=navigator.userAgent.indexOf("Firefox")};var i=-1;return e.addEventListener=function(t,i,n,o){if(t.addEventListener)return void 0===o&&(o=!1),"mousewheel"===i&&e.isFirefox()&&(i="DOMMouseScroll"),t.addEventListener(i,n,o),n;if(t.attachEvent){var s=function(){return n.call(t,window.event)};return t.attachEvent("on"+i,s),s}},e.removeEventListener=function(t,i,n,o){t.removeEventListener?(void 0===o&&(o=!1),"mousewheel"===i&&e.isFirefox()&&(i="DOMMouseScroll"),t.removeEventListener(i,n,o)):t.detachEvent&&t.detachEvent("on"+i,n)},e}.call(t,i,t,e),!(void 0!==n&&(e.exports=n))},function(e,t,i){var n;n=function(){function e(){this.locked=!1}return e.prototype.highlight=function(e){this.locked||(this.node!=e&&(this.node&&this.node.setHighlight(!1),this.node=e,this.node.setHighlight(!0)),this._cancelUnhighlight())},e.prototype.unhighlight=function(){if(!this.locked){var e=this;this.node&&(this._cancelUnhighlight(),this.unhighlightTimer=setTimeout(function(){e.node.setHighlight(!1),e.node=void 0,e.unhighlightTimer=void 0},0))}},e.prototype._cancelUnhighlight=function(){this.unhighlightTimer&&(clearTimeout(this.unhighlightTimer),this.unhighlightTimer=void 0)},e.prototype.lock=function(){this.locked=!0},e.prototype.unlock=function(){this.locked=!1},e}.call(t,i,t,e),!(void 0!==n&&(e.exports=n))},function(e,t,i){var n,o;n=[i(3)],o=function(e){function t(e){this.editor=e,this.clear(),this.actions={editField:{undo:function(e){e.node.updateField(e.oldValue)},redo:function(e){e.node.updateField(e.newValue)}},editValue:{undo:function(e){e.node.updateValue(e.oldValue)},redo:function(e){e.node.updateValue(e.newValue)}},appendNode:{undo:function(e){e.parent.removeChild(e.node)},redo:function(e){e.parent.appendChild(e.node)}},insertBeforeNode:{undo:function(e){e.parent.removeChild(e.node)},redo:function(e){e.parent.insertBefore(e.node,e.beforeNode)}},insertAfterNode:{undo:function(e){e.parent.removeChild(e.node)},redo:function(e){e.parent.insertAfter(e.node,e.afterNode)}},removeNode:{undo:function(e){var t=e.parent,i=t.childs[e.index]||t.append;t.insertBefore(e.node,i)},redo:function(e){e.parent.removeChild(e.node)}},duplicateNode:{undo:function(e){e.parent.removeChild(e.clone)},redo:function(e){e.parent.insertAfter(e.clone,e.node)}},changeType:{undo:function(e){e.node.changeType(e.oldType)},redo:function(e){e.node.changeType(e.newType)}},moveNode:{undo:function(e){e.startParent.moveTo(e.node,e.startIndex)},redo:function(e){e.endParent.moveTo(e.node,e.endIndex)}},sort:{undo:function(e){var t=e.node;t.hideChilds(),t.sort=e.oldSort,t.childs=e.oldChilds,t.showChilds()},redo:function(e){var t=e.node;t.hideChilds(),t.sort=e.newSort,t.childs=e.newChilds,t.showChilds()}}}}return t.prototype.onChange=function(){},t.prototype.add=function(e,t){this.index++,this.history[this.index]={action:e,params:t,timestamp:new Date},this.index=0},t.prototype.canRedo=function(){return this.indexthis.results.length-1&&(t=0),this._setActiveResult(t,e)}},e.prototype.previous=function(e){if(void 0!=this.results){var t=this.results.length-1,i=void 0!=this.resultIndex?this.resultIndex-1:t;0>i&&(i=t),this._setActiveResult(i,e)}},e.prototype._setActiveResult=function(e,t){if(this.activeResult){var i=this.activeResult.node,n=this.activeResult.elem;"field"==n?delete i.searchFieldActive:delete i.searchValueActive,i.updateDom()}if(!this.results||!this.results[e])return this.resultIndex=void 0,void(this.activeResult=void 0);this.resultIndex=e;var o=this.results[this.resultIndex].node,s=this.results[this.resultIndex].elem;"field"==s?o.searchFieldActive=!0:o.searchValueActive=!0,this.activeResult=this.results[this.resultIndex],o.updateDom(),o.scrollTo(function(){t&&o.focus(s)})},e.prototype._clearDelay=function(){void 0!=this.timeout&&(clearTimeout(this.timeout),delete this.timeout)},e.prototype._onDelayedSearch=function(){this._clearDelay();var e=this;this.timeout=setTimeout(function(t){e._onSearch(t)},this.delay)},e.prototype._onSearch=function(e,t){this._clearDelay();var i=this.dom.search.value,n=i.length>0?i:void 0;if(n!=this.lastText||t)if(this.lastText=n,this.results=this.editor.search(n),this._setActiveResult(void 0),void 0!=n){var o=this.results.length;switch(o){case 0:this.dom.results.innerHTML="no results";break;case 1:this.dom.results.innerHTML="1 result";break;default:this.dom.results.innerHTML=o+" results"}}else this.dom.results.innerHTML=""},e.prototype._onKeyDown=function(e){var t=e.which;27==t?(this.dom.search.value="",this._onSearch(e),e.preventDefault(),e.stopPropagation()):13==t&&(e.ctrlKey?this._onSearch(e,!0):e.shiftKey?this.previous():this.next(),e.preventDefault(),e.stopPropagation())},e.prototype._onKeyUp=function(e){var t=e.keyCode;27!=t&&13!=t&&this._onDelayedSearch(e)},e}.call(t,i,t,e),!(void 0!==n&&(e.exports=n))},function(e,t,i){var n,o;n=[i(9),i(10),i(3)],o=function(e,t,i){function n(e,t){this.editor=e,this.dom={},this.expanded=!1,t&&t instanceof Object?(this.setField(t.field,t.fieldEditable),this.setValue(t.value,t.type)):(this.setField(""),this.setValue(null))}n.prototype._updateEditability=function(){if(this.editable={field:!0,value:!0},this.editor&&(this.editable.field="tree"===this.editor.options.mode,this.editable.value="view"!==this.editor.options.mode,"tree"===this.editor.options.mode&&"function"==typeof this.editor.options.editable)){var e=this.editor.options.editable({field:this.field,value:this.value,path:this.path()});"boolean"==typeof e?(this.editable.field=e,this.editable.value=e):("boolean"==typeof e.field&&(this.editable.field=e.field),"boolean"==typeof e.value&&(this.editable.value=e.value))}},n.prototype.path=function(){for(var e=this,t=[];e;){var i=e.field||e.index;void 0!==i&&t.unshift(i),e=e.parent}return t},n.prototype.setParent=function(e){this.parent=e},n.prototype.setField=function(e,t){this.field=e,this.fieldEditable=1==t},n.prototype.getField=function(){return void 0===this.field&&this._getDomField(),this.field},n.prototype.setValue=function(e,t){var i,o,s=this.childs;if(s)for(;s.length;)this.removeChild(s[0]);if(this.type=this._getType(e),t&&t!=this.type){if("string"!=t||"auto"!=this.type)throw new Error('Type mismatch: cannot cast value of type "'+this.type+' to the specified type "'+t+'"');this.type=t}if("array"==this.type){this.childs=[];for(var r=0,a=e.length;a>r;r++)i=e[r],void 0===i||i instanceof Function||(o=new n(this.editor,{value:i}),this.appendChild(o));this.value=""}else if("object"==this.type){this.childs=[];for(var d in e)e.hasOwnProperty(d)&&(i=e[d],void 0===i||i instanceof Function||(o=new n(this.editor,{field:d,value:i}),this.appendChild(o)));this.value=""}else this.childs=void 0,this.value=e},n.prototype.getValue=function(){if("array"==this.type){var e=[];return this.childs.forEach(function(t){e.push(t.getValue())}),e}if("object"==this.type){var t={};return this.childs.forEach(function(e){t[e.getField()]=e.getValue()}),t}return void 0===this.value&&this._getDomValue(),this.value},n.prototype.getLevel=function(){return this.parent?this.parent.getLevel()+1:0},n.prototype.clone=function(){var e=new n(this.editor);if(e.type=this.type,e.field=this.field,e.fieldInnerText=this.fieldInnerText,e.fieldEditable=this.fieldEditable,e.value=this.value,e.valueInnerText=this.valueInnerText,e.expanded=this.expanded,this.childs){var t=[];this.childs.forEach(function(i){var n=i.clone();n.setParent(e),t.push(n)}),e.childs=t}else e.childs=void 0;return e},n.prototype.expand=function(e){this.childs&&(this.expanded=!0,this.dom.expand&&(this.dom.expand.className="expanded"),this.showChilds(),0!=e&&this.childs.forEach(function(t){t.expand(e)}))},n.prototype.collapse=function(e){this.childs&&(this.hideChilds(),0!=e&&this.childs.forEach(function(t){t.collapse(e)}),this.dom.expand&&(this.dom.expand.className="collapsed"),this.expanded=!1)},n.prototype.showChilds=function(){var e=this.childs;if(e&&this.expanded){var t=this.dom.tr,i=t?t.parentNode:void 0;if(i){var n=this.getAppend(),o=t.nextSibling;o?i.insertBefore(n,o):i.appendChild(n),this.childs.forEach(function(e){i.insertBefore(e.getDom(),n),e.showChilds()})}}},n.prototype.hide=function(){var e=this.dom.tr,t=e?e.parentNode:void 0;t&&t.removeChild(e),this.hideChilds()},n.prototype.hideChilds=function(){var e=this.childs;if(e&&this.expanded){var t=this.getAppend();t.parentNode&&t.parentNode.removeChild(t),this.childs.forEach(function(e){e.hide()})}},n.prototype.appendChild=function(e){if(this._hasChilds()){if(e.setParent(this),e.fieldEditable="object"==this.type,"array"==this.type&&(e.index=this.childs.length),this.childs.push(e),this.expanded){var t=e.getDom(),i=this.getAppend(),n=i?i.parentNode:void 0;i&&n&&n.insertBefore(t,i),e.showChilds()}this.updateDom({updateIndexes:!0}),e.updateDom({recurse:!0})}},n.prototype.moveBefore=function(e,t){if(this._hasChilds()){var i=this.dom.tr?this.dom.tr.parentNode:void 0;if(i){var n=document.createElement("tr");n.style.height=i.clientHeight+"px",i.appendChild(n)}e.parent&&e.parent.removeChild(e),t instanceof o?this.appendChild(e):this.insertBefore(e,t),i&&i.removeChild(n)}},n.prototype.moveTo=function(e,t){if(e.parent==this){var i=this.childs.indexOf(e);t>i&&t++}var n=this.childs[t]||this.append;this.moveBefore(e,n)},n.prototype.insertBefore=function(e,t){if(this._hasChilds()){if(t==this.append)e.setParent(this),e.fieldEditable="object"==this.type,this.childs.push(e);else{var i=this.childs.indexOf(t);if(-1==i)throw new Error("Node not found");e.setParent(this),e.fieldEditable="object"==this.type,this.childs.splice(i,0,e)}if(this.expanded){var n=e.getDom(),o=t.getDom(),s=o?o.parentNode:void 0;o&&s&&s.insertBefore(n,o),e.showChilds()}this.updateDom({updateIndexes:!0}),e.updateDom({recurse:!0})}},n.prototype.insertAfter=function(e,t){if(this._hasChilds()){var i=this.childs.indexOf(t),n=this.childs[i+1];n?this.insertBefore(e,n):this.appendChild(e)}},n.prototype.search=function(e){var t,i=[],n=e?e.toLowerCase():void 0;if(delete this.searchField,delete this.searchValue,void 0!=this.field){var o=String(this.field).toLowerCase();t=o.indexOf(n),-1!=t&&(this.searchField=!0,i.push({node:this,elem:"field"})),this._updateDomField()}if(this._hasChilds()){if(this.childs){var s=[];this.childs.forEach(function(t){s=s.concat(t.search(e))}),i=i.concat(s)}if(void 0!=n){var r=!1;0==s.length?this.collapse(r):this.expand(r)}}else{if(void 0!=this.value){var a=String(this.value).toLowerCase();t=a.indexOf(n),-1!=t&&(this.searchValue=!0,i.push({node:this,elem:"value"}))}this._updateDomValue()}return i},n.prototype.scrollTo=function(e){if(!this.dom.tr||!this.dom.tr.parentNode)for(var t=this.parent,i=!1;t;)t.expand(i),t=t.parent;this.dom.tr&&this.dom.tr.parentNode&&this.editor.scrollTo(this.dom.tr.offsetTop,e)},n.focusElement=void 0,n.prototype.focus=function(e){if(n.focusElement=e,this.dom.tr&&this.dom.tr.parentNode){var t=this.dom;switch(e){case"drag":t.drag?t.drag.focus():t.menu.focus();break;case"menu":t.menu.focus();break;case"expand":this._hasChilds()?t.expand.focus():t.field&&this.fieldEditable?(t.field.focus(),i.selectContentEditable(t.field)):t.value&&!this._hasChilds()?(t.value.focus(),i.selectContentEditable(t.value)):t.menu.focus();break;case"field":t.field&&this.fieldEditable?(t.field.focus(),i.selectContentEditable(t.field)):t.value&&!this._hasChilds()?(t.value.focus(),i.selectContentEditable(t.value)):this._hasChilds()?t.expand.focus():t.menu.focus();break;case"value":default:t.value&&!this._hasChilds()?(t.value.focus(),i.selectContentEditable(t.value)):t.field&&this.fieldEditable?(t.field.focus(),i.selectContentEditable(t.field)):this._hasChilds()?t.expand.focus():t.menu.focus()}}},n.select=function(e){setTimeout(function(){i.selectContentEditable(e)},0)},n.prototype.blur=function(){this._getDomValue(!1),this._getDomField(!1)},n.prototype._duplicate=function(e){var t=e.clone();return this.insertAfter(t,e),t},n.prototype.containsNode=function(e){if(this==e)return!0; -var t=this.childs;if(t)for(var i=0,n=t.length;n>i;i++)if(t[i].containsNode(e))return!0;return!1},n.prototype._move=function(e,t){if(e!=t){if(e.containsNode(this))throw new Error("Cannot move a field into a child of itself");e.parent&&e.parent.removeChild(e);var i=e.clone();e.clearDom(),t?this.insertBefore(i,t):this.appendChild(i)}},n.prototype.removeChild=function(e){if(this.childs){var t=this.childs.indexOf(e);if(-1!=t){e.hide(),delete e.searchField,delete e.searchValue;var i=this.childs.splice(t,1)[0];return this.updateDom({updateIndexes:!0}),i}}return void 0},n.prototype._remove=function(e){this.removeChild(e)},n.prototype.changeType=function(e){var t=this.type;if(t!=e){if("string"!=e&&"auto"!=e||"string"!=t&&"auto"!=t){var i,n=this.dom.tr?this.dom.tr.parentNode:void 0;i=this.expanded?this.getAppend():this.getDom();var o=i&&i.parentNode?i.nextSibling:void 0;this.hide(),this.clearDom(),this.type=e,"object"==e?(this.childs||(this.childs=[]),this.childs.forEach(function(e){e.clearDom(),delete e.index,e.fieldEditable=!0,void 0==e.field&&(e.field="")}),("string"==t||"auto"==t)&&(this.expanded=!0)):"array"==e?(this.childs||(this.childs=[]),this.childs.forEach(function(e,t){e.clearDom(),e.fieldEditable=!1,e.index=t}),("string"==t||"auto"==t)&&(this.expanded=!0)):this.expanded=!1,n&&(o?n.insertBefore(this.getDom(),o):n.appendChild(this.getDom())),this.showChilds()}else this.type=e;("auto"==e||"string"==e)&&(this.value="string"==e?String(this.value):this._stringCast(String(this.value)),this.focus()),this.updateDom({updateIndexes:!0})}},n.prototype._getDomValue=function(e){if(this.dom.value&&"array"!=this.type&&"object"!=this.type&&(this.valueInnerText=i.getInnerText(this.dom.value)),void 0!=this.valueInnerText)try{var t;if("string"==this.type)t=this._unescapeHTML(this.valueInnerText);else{var n=this._unescapeHTML(this.valueInnerText);t=this._stringCast(n)}if(t!==this.value){var o=this.value;this.value=t,this.editor._onAction("editValue",{node:this,oldValue:o,newValue:t,oldSelection:this.editor.selection,newSelection:this.editor.getSelection()})}}catch(s){if(this.value=void 0,1!=e)throw s}},n.prototype._updateDomValue=function(){var e=this.dom.value;if(e){var t=this.value,n="auto"==this.type?i.type(t):this.type,o="string"==n&&i.isUrl(t),s="";s=o&&!this.editable.value?"":"string"==n?"green":"number"==n?"red":"boolean"==n?"darkorange":this._hasChilds()?"":null===t?"#004ED0":"black",e.style.color=s;var r=""==String(this.value)&&"array"!=this.type&&"object"!=this.type;if(r?i.addClassName(e,"empty"):i.removeClassName(e,"empty"),o?i.addClassName(e,"url"):i.removeClassName(e,"url"),"array"==n||"object"==n){var a=this.childs?this.childs.length:0;e.title=this.type+" containing "+a+" items"}else"string"==n&&i.isUrl(t)?this.editable.value&&(e.title="Ctrl+Click or Ctrl+Enter to open url in new window"):e.title="";this.searchValueActive?i.addClassName(e,"highlight-active"):i.removeClassName(e,"highlight-active"),this.searchValue?i.addClassName(e,"highlight"):i.removeClassName(e,"highlight"),i.stripFormatting(e)}},n.prototype._updateDomField=function(){var e=this.dom.field;if(e){var t=""==String(this.field)&&"array"!=this.parent.type;t?i.addClassName(e,"empty"):i.removeClassName(e,"empty"),this.searchFieldActive?i.addClassName(e,"highlight-active"):i.removeClassName(e,"highlight-active"),this.searchField?i.addClassName(e,"highlight"):i.removeClassName(e,"highlight"),i.stripFormatting(e)}},n.prototype._getDomField=function(e){if(this.dom.field&&this.fieldEditable&&(this.fieldInnerText=i.getInnerText(this.dom.field)),void 0!=this.fieldInnerText)try{var t=this._unescapeHTML(this.fieldInnerText);if(t!==this.field){var n=this.field;this.field=t,this.editor._onAction("editField",{node:this,oldValue:n,newValue:t,oldSelection:this.editor.selection,newSelection:this.editor.getSelection()})}}catch(o){if(this.field=void 0,1!=e)throw o}},n.prototype.clearDom=function(){this.dom={}},n.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;if(this._updateEditability(),e.tr=document.createElement("tr"),e.tr.node=this,"tree"===this.editor.options.mode){var t=document.createElement("td");if(this.editable.field&&this.parent){var i=document.createElement("button");e.drag=i,i.className="dragarea",i.title="Drag to move this field (Alt+Shift+Arrows)",t.appendChild(i)}e.tr.appendChild(t);var n=document.createElement("td"),o=document.createElement("button");e.menu=o,o.className="contextmenu",o.title="Click to open the actions menu (Ctrl+M)",n.appendChild(e.menu),e.tr.appendChild(n)}var s=document.createElement("td");return e.tr.appendChild(s),e.tree=this._createDomTree(),s.appendChild(e.tree),this.updateDom({updateIndexes:!0}),e.tr},n.prototype._onDragStart=function(e){var t=this;this.mousemove||(this.mousemove=i.addEventListener(document,"mousemove",function(e){t._onDrag(e)})),this.mouseup||(this.mouseup=i.addEventListener(document,"mouseup",function(e){t._onDragEnd(e)})),this.editor.highlighter.lock(),this.drag={oldCursor:document.body.style.cursor,startParent:this.parent,startIndex:this.parent.childs.indexOf(this),mouseX:e.pageX,level:this.getLevel()},document.body.style.cursor="move",e.preventDefault()},n.prototype._onDrag=function(e){var t,s,r,a,d,h,l,c,u,p,f,m,v,g,y=e.pageY,x=e.pageX,b=!1;if(t=this.dom.tr,u=i.getAbsoluteTop(t),m=t.offsetHeight,u>y){s=t;do s=s.previousSibling,l=n.getNodeFromTarget(s),p=s?i.getAbsoluteTop(s):0;while(s&&p>y);l&&!l.parent&&(l=void 0),l||(h=t.parentNode.firstChild,s=h?h.nextSibling:void 0,l=n.getNodeFromTarget(s),l==this&&(l=void 0)),l&&(s=l.dom.tr,p=s?i.getAbsoluteTop(s):0,y>p+m&&(l=void 0)),l&&(l.parent.moveBefore(this,l),b=!0)}else if(d=this.expanded&&this.append?this.append.getDom():this.dom.tr,a=d?d.nextSibling:void 0){f=i.getAbsoluteTop(a),r=a;do c=n.getNodeFromTarget(r),r&&(v=r.nextSibling?i.getAbsoluteTop(r.nextSibling):0,g=r?v-f:0,1==c.parent.childs.length&&c.parent.childs[0]==this&&(u+=23)),r=r.nextSibling;while(r&&y>u+g);if(c&&c.parent){var C=x-this.drag.mouseX,E=Math.round(C/24/2),N=this.drag.level+E,_=c.getLevel();for(s=c.dom.tr.previousSibling;N>_&&s;){if(l=n.getNodeFromTarget(s),l==this||l._isChildOf(this));else{if(!(l instanceof o))break;var w=l.parent.childs;if(!(w.length>1||1==w.length&&w[0]!=this))break;c=n.getNodeFromTarget(s),_=c.getLevel()}s=s.previousSibling}d.nextSibling!=c.dom.tr&&(c.parent.moveBefore(this,c),b=!0)}}b&&(this.drag.mouseX=x,this.drag.level=this.getLevel()),this.editor.startAutoScroll(y),e.preventDefault()},n.prototype._onDragEnd=function(e){var t={node:this,startParent:this.drag.startParent,startIndex:this.drag.startIndex,endParent:this.parent,endIndex:this.parent.childs.indexOf(this)};(t.startParent!=t.endParent||t.startIndex!=t.endIndex)&&this.editor._onAction("moveNode",t),document.body.style.cursor=this.drag.oldCursor,this.editor.highlighter.unlock(),delete this.drag,this.mousemove&&(i.removeEventListener(document,"mousemove",this.mousemove),delete this.mousemove),this.mouseup&&(i.removeEventListener(document,"mouseup",this.mouseup),delete this.mouseup),this.editor.stopAutoScroll(),e.preventDefault()},n.prototype._isChildOf=function(e){for(var t=this.parent;t;){if(t==e)return!0;t=t.parent}return!1},n.prototype._createDomField=function(){return document.createElement("div")},n.prototype.setHighlight=function(e){this.dom.tr&&(this.dom.tr.className=e?"highlight":"",this.append&&this.append.setHighlight(e),this.childs&&this.childs.forEach(function(t){t.setHighlight(e)}))},n.prototype.updateValue=function(e){this.value=e,this.updateDom()},n.prototype.updateField=function(e){this.field=e,this.updateDom()},n.prototype.updateDom=function(e){var t=this.dom.tree;t&&(t.style.marginLeft=24*this.getLevel()+"px");var i=this.dom.field;if(i){this.fieldEditable?(i.contentEditable=this.editable.field,i.spellcheck=!1,i.className="field"):i.className="readonly";var n;n=void 0!=this.index?this.index:void 0!=this.field?this.field:this._hasChilds()?this.type:"",i.innerHTML=this._escapeHTML(n)}var o=this.dom.value;if(o){var s=this.childs?this.childs.length:0;o.innerHTML="array"==this.type?"["+s+"]":"object"==this.type?"{"+s+"}":this._escapeHTML(this.value)}this._updateDomField(),this._updateDomValue(),e&&1==e.updateIndexes&&this._updateDomIndexes(),e&&1==e.recurse&&this.childs&&this.childs.forEach(function(t){t.updateDom(e)}),this.append&&this.append.updateDom()},n.prototype._updateDomIndexes=function(){var e=this.dom.value,t=this.childs;e&&t&&("array"==this.type?t.forEach(function(e,t){e.index=t;var i=e.dom.field;i&&(i.innerHTML=t)}):"object"==this.type&&t.forEach(function(e){void 0!=e.index&&(delete e.index,void 0==e.field&&(e.field=""))}))},n.prototype._createDomValue=function(){var e;return"array"==this.type?(e=document.createElement("div"),e.className="readonly",e.innerHTML="[...]"):"object"==this.type?(e=document.createElement("div"),e.className="readonly",e.innerHTML="{...}"):!this.editable.value&&i.isUrl(this.value)?(e=document.createElement("a"),e.className="value",e.href=this.value,e.target="_blank",e.innerHTML=this._escapeHTML(this.value)):(e=document.createElement("div"),e.contentEditable=this.editable.value,e.spellcheck=!1,e.className="value",e.innerHTML=this._escapeHTML(this.value)),e},n.prototype._createDomExpandButton=function(){var e=document.createElement("button");return this._hasChilds()?(e.className=this.expanded?"expanded":"collapsed",e.title="Click to expand/collapse this field (Ctrl+E). \nCtrl+Click to expand/collapse including all childs."):(e.className="invisible",e.title=""),e},n.prototype._createDomTree=function(){var e=this.dom,t=document.createElement("table"),i=document.createElement("tbody");t.style.borderCollapse="collapse",t.className="values",t.appendChild(i);var n=document.createElement("tr");i.appendChild(n);var o=document.createElement("td");o.className="tree",n.appendChild(o),e.expand=this._createDomExpandButton(),o.appendChild(e.expand),e.tdExpand=o;var s=document.createElement("td");s.className="tree",n.appendChild(s),e.field=this._createDomField(),s.appendChild(e.field),e.tdField=s;var r=document.createElement("td");r.className="tree",n.appendChild(r),"object"!=this.type&&"array"!=this.type&&(r.appendChild(document.createTextNode(":")),r.className="separator"),e.tdSeparator=r;var a=document.createElement("td");return a.className="tree",n.appendChild(a),e.value=this._createDomValue(),a.appendChild(e.value),e.tdValue=a,t},n.prototype.onEvent=function(e){var t,n=e.type,o=e.target||e.srcElement,s=this.dom,r=this,a=this._hasChilds();if((o==s.drag||o==s.menu)&&("mouseover"==n?this.editor.highlighter.highlight(this):"mouseout"==n&&this.editor.highlighter.unhighlight()),"mousedown"==n&&o==s.drag&&this._onDragStart(e),"click"==n&&o==s.menu){var d=r.editor.highlighter;d.highlight(r),d.lock(),i.addClassName(s.menu,"selected"),this.showContextMenu(s.menu,function(){i.removeClassName(s.menu,"selected"),d.unlock(),d.unhighlight()})}if("click"==n&&o==s.expand&&a){var h=e.ctrlKey;this._onExpand(h)}var l=s.value;if(o==l)switch(n){case"focus":t=this;break;case"blur":case"change":this._getDomValue(!0),this._updateDomValue(),this.value&&(l.innerHTML=this._escapeHTML(this.value));break;case"input":this._getDomValue(!0),this._updateDomValue();break;case"keydown":case"mousedown":this.editor.selection=this.editor.getSelection();break;case"click":(e.ctrlKey||!this.editable.value)&&i.isUrl(this.value)&&window.open(this.value,"_blank");break;case"keyup":this._getDomValue(!0),this._updateDomValue();break;case"cut":case"paste":setTimeout(function(){r._getDomValue(!0),r._updateDomValue()},1)}var c=s.field;if(o==c)switch(n){case"focus":t=this;break;case"blur":case"change":this._getDomField(!0),this._updateDomField(),this.field&&(c.innerHTML=this._escapeHTML(this.field));break;case"input":this._getDomField(!0),this._updateDomField();break;case"keydown":case"mousedown":this.editor.selection=this.editor.getSelection();break;case"keyup":this._getDomField(!0),this._updateDomField();break;case"cut":case"paste":setTimeout(function(){r._getDomField(!0),r._updateDomField()},1)}var u=s.tree;if(o==u.parentNode)switch(n){case"click":var p=void 0!=e.offsetX?e.offsetX<24*(this.getLevel()+1):e.pageXn[i]?t:e[i]/g,">").replace(/ /g,"  ").replace(/^ /," ").replace(/ $/," "),i=JSON.stringify(t);return i.substring(1,i.length-1)},n.prototype._unescapeHTML=function(e){var t='"'+this._escapeJSON(e)+'"',n=i.parse(t);return n.replace(/</g,"<").replace(/>/g,">").replace(/ |\u00A0/g," ")},n.prototype._escapeJSON=function(e){for(var t="",i=0,n=e.length;n>i;){var o=e.charAt(i);"\n"==o?t+="\\n":"\\"==o?(t+=o,i++,o=e.charAt(i),-1=='"\\/bfnrtu'.indexOf(o)&&(t+="\\"),t+=o):t+='"'==o?'\\"':o,i++}return t};var o=t(n);return n}.apply(t,n),!(void 0!==o&&(e.exports=o))},function(e,t,i){var n,o;n=[i(9)],o=function(e){function t(t,i,n){function o(e){t.setMode(e);var i=t.dom&&t.dom.modeBox;i&&i.focus()}for(var s={code:{text:"Code",title:"Switch to code highlighter",click:function(){o("code")}},form:{text:"Form",title:"Switch to form editor",click:function(){o("form")}},text:{text:"Text",title:"Switch to plain text editor",click:function(){o("text")}},tree:{text:"Tree",title:"Switch to tree editor",click:function(){o("tree")}},view:{text:"View",title:"Switch to tree view",click:function(){o("view")}}},r=[],a=0;a
    ',a.appendChild(c),o.submenuTitle&&(c.title=o.submenuTitle),l=c}else{var u=document.createElement("div");u.className="expand",d.appendChild(u),l=d}l.onclick=function(){n._onExpandItem(r),l.focus()};var p=[];r.subItems=p;var f=document.createElement("ul");r.ul=f,f.className="menu",f.style.height="0",a.appendChild(f),i(f,p,o.submenu)}else d.innerHTML='
    '+o.text;t.push(r)}})}this.dom={};var n=this,o=this.dom;this.anchor=void 0,this.items=e,this.eventListeners={},this.selection=void 0,this.visibleSubmenu=void 0,this.onClose=t?t.close:void 0;var s=document.createElement("div");s.className="jsoneditor-contextmenu",o.menu=s;var r=document.createElement("ul");r.className="menu",s.appendChild(r),o.list=r,o.items=[];var a=document.createElement("button");o.focusButton=a;var d=document.createElement("li");d.style.overflow="hidden",d.style.height="0",d.appendChild(a),r.appendChild(d),i(r,this.dom.items,e),this.maxHeight=0,e.forEach(function(t){var i=24*(e.length+(t.submenu?t.submenu.length:0));n.maxHeight=Math.max(n.maxHeight,i)})}return t.prototype._getVisibleButtons=function(){var e=[],t=this;return this.dom.items.forEach(function(i){e.push(i.button),i.buttonExpand&&e.push(i.buttonExpand),i.subItems&&i==t.expandedItem&&i.subItems.forEach(function(t){e.push(t.button),t.buttonExpand&&e.push(t.buttonExpand)})}),e},t.visibleMenu=void 0,t.prototype.show=function(i){this.hide();var n=window.innerHeight,o=window.pageYOffset||document.scrollTop||0,s=n+o,r=i.offsetHeight,a=this.maxHeight,d=e.getAbsoluteLeft(i),h=e.getAbsoluteTop(i);s>h+r+a?(this.dom.menu.style.left=d+"px",this.dom.menu.style.top=h+r+"px",this.dom.menu.style.bottom=""):(this.dom.menu.style.left=d+"px",this.dom.menu.style.top="",this.dom.menu.style.bottom=n-h+"px"),document.body.appendChild(this.dom.menu);var l=this,c=this.dom.list;this.eventListeners.mousedown=e.addEventListener(document,"mousedown",function(e){var t=e.target;t==c||l._isChildOf(t,c)||(l.hide(),e.stopPropagation(),e.preventDefault())}),this.eventListeners.mousewheel=e.addEventListener(document,"mousewheel",function(e){e.stopPropagation(),e.preventDefault()}),this.eventListeners.keydown=e.addEventListener(document,"keydown",function(e){l._onKeyDown(e)}),this.selection=e.getSelection(),this.anchor=i,setTimeout(function(){l.dom.focusButton.focus()},0),t.visibleMenu&&t.visibleMenu.hide(),t.visibleMenu=this},t.prototype.hide=function(){this.dom.menu.parentNode&&(this.dom.menu.parentNode.removeChild(this.dom.menu),this.onClose&&this.onClose());for(var i in this.eventListeners)if(this.eventListeners.hasOwnProperty(i)){var n=this.eventListeners[i];n&&e.removeEventListener(document,i,n),delete this.eventListeners[i]}t.visibleMenu==this&&(t.visibleMenu=void 0)},t.prototype._onExpandItem=function(t){var i=this,n=t==this.expandedItem,o=this.expandedItem;if(o&&(o.ul.style.height="0",o.ul.style.padding="",setTimeout(function(){i.expandedItem!=o&&(o.ul.style.display="",e.removeClassName(o.ul.parentNode,"selected"))},300),this.expandedItem=void 0),!n){var s=t.ul;s.style.display="block";{s.clientHeight}setTimeout(function(){i.expandedItem==t&&(s.style.height=24*s.childNodes.length+"px",s.style.padding="5px 10px")},0),e.addClassName(s.parentNode,"selected"),this.expandedItem=t}},t.prototype._onKeyDown=function(t){var i,n,o,s,r=t.target,a=t.which,d=!1;27==a?(this.selection&&e.setSelection(this.selection),this.anchor&&this.anchor.focus(),this.hide(),d=!0):9==a?t.shiftKey?(i=this._getVisibleButtons(),n=i.indexOf(r),0==n&&(i[i.length-1].focus(),d=!0)):(i=this._getVisibleButtons(),n=i.indexOf(r),n==i.length-1&&(i[0].focus(),d=!0)):37==a?("expand"==r.className&&(i=this._getVisibleButtons(),n=i.indexOf(r),o=i[n-1],o&&o.focus()),d=!0):38==a?(i=this._getVisibleButtons(),n=i.indexOf(r),o=i[n-1],o&&"expand"==o.className&&(o=i[n-2]),o||(o=i[i.length-1]),o&&o.focus(),d=!0):39==a?(i=this._getVisibleButtons(),n=i.indexOf(r),s=i[n+1],s&&"expand"==s.className&&s.focus(),d=!0):40==a&&(i=this._getVisibleButtons(),n=i.indexOf(r),s=i[n+1],s&&"expand"==s.className&&(s=i[n+2]),s||(s=i[0]),s&&(s.focus(),d=!0),d=!0),d&&(t.stopPropagation(),t.preventDefault())},t.prototype._isChildOf=function(e,t){for(var i=e.parentNode;i;){if(i==t)return!0;i=i.parentNode}return!1},t}.apply(t,n),!(void 0!==o&&(e.exports=o))},function(e,t,i){var n,o;n=[i(9),i(3)],o=function(e,t){function i(i){function n(e){this.editor=e,this.dom={}}return n.prototype=new i,n.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;this._updateEditability();var t=document.createElement("tr");if(t.node=this,e.tr=t,this.editable.field){e.tdDrag=document.createElement("td");var i=document.createElement("td");e.tdMenu=i;var n=document.createElement("button");n.className="contextmenu",n.title="Click to open the actions menu (Ctrl+M)",e.menu=n,i.appendChild(e.menu)}var o=document.createElement("td"),s=document.createElement("div");return s.innerHTML="(empty)",s.className="readonly",o.appendChild(s),e.td=o,e.text=s,this.updateDom(),t},n.prototype.updateDom=function(){var e=this.dom,t=e.td;t&&(t.style.paddingLeft=24*this.getLevel()+26+"px");var i=e.text;i&&(i.innerHTML="(empty "+this.parent.type+")");var n=e.tr;this.isVisible()?e.tr.firstChild||(e.tdDrag&&n.appendChild(e.tdDrag),e.tdMenu&&n.appendChild(e.tdMenu),n.appendChild(t)):e.tr.firstChild&&(e.tdDrag&&n.removeChild(e.tdDrag),e.tdMenu&&n.removeChild(e.tdMenu),n.removeChild(t))},n.prototype.isVisible=function(){return 0==this.parent.childs.length},n.prototype.showContextMenu=function(t,n){var o=this,s=i.TYPE_TITLES,r=[{text:"Append",title:"Append a new field with type 'auto' (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"insert",click:function(){o._onAppend("","","auto")},submenu:[{text:"Auto",className:"type-auto",title:s.auto,click:function(){o._onAppend("","","auto")}},{text:"Array",className:"type-array",title:s.array,click:function(){o._onAppend("",[])}},{text:"Object",className:"type-object",title:s.object,click:function(){o._onAppend("",{})}},{text:"String",className:"type-string",title:s.string,click:function(){o._onAppend("","","string")}}]}],a=new e(r,{close:n});a.show(t)},n.prototype.onEvent=function(e){var i=e.type,n=e.target||e.srcElement,o=this.dom,s=o.menu;if(n==s&&("mouseover"==i?this.editor.highlighter.highlight(this.parent):"mouseout"==i&&this.editor.highlighter.unhighlight()),"click"==i&&n==o.menu){var r=this.editor.highlighter;r.highlight(this.parent),r.lock(),t.addClassName(o.menu,"selected"),this.showContextMenu(o.menu,function(){t.removeClassName(o.menu,"selected"),r.unlock(),r.unhighlight()})}"keydown"==i&&this.onKeyDown(e)},n}return i}.apply(t,n),!(void 0!==o&&(e.exports=o))}])}); -//# sourceMappingURL=jsoneditor.map \ No newline at end of file diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/package.json b/data-mgmt/src/main/webapp/bower_components/jsoneditor/package.json new file mode 100644 index 0000000..3ba6fea --- /dev/null +++ b/data-mgmt/src/main/webapp/bower_components/jsoneditor/package.json @@ -0,0 +1,38 @@ +{ + "name": "jsoneditor", + "version": "4.1.3", + "main": "./index", + "description": "A web-based tool to view, edit and format JSON", + "tags": [ + "json", + "editor", + "viewer", + "formatter" + ], + "author": "Jos de Jong ", + "homepage": "http://jsoneditoronline.org/", + "repository": { + "type": "git", + "url": "https://github.com/josdejong/jsoneditor.git" + }, + "bugs": "https://github.com/josdejong/jsoneditor/issues", + "scripts": { + "build": "gulp", + "test": "mocha test" + }, + "dependencies": { + "brace": "^0.4.1", + "jsonlint": "josdejong/jsonlint#fb47330" + }, + "devDependencies": { + "gulp": "^3.8.11", + "gulp-concat-css": "^2.0.0", + "gulp-minify-css": "^0.4.5", + "gulp-shell": "^0.3.0", + "gulp-util": "^3.0.3", + "mkdirp": "^0.5.0", + "mocha": "^2.1.0", + "uglify-js": "^2.4.16", + "webpack": "^1.5.3" + } +} diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/contextmenu.css b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/contextmenu.css new file mode 100644 index 0000000..95c49e0 --- /dev/null +++ b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/contextmenu.css @@ -0,0 +1,224 @@ + +/* ContextMenu - main menu */ + +.jsoneditor-contextmenu { + position: absolute; + z-index: 99999; +} + +.jsoneditor-contextmenu ul { + position: relative; + left: 0; + top: 0; + width: 124px; + + background: white; + border: 1px solid #d3d3d3; + box-shadow: 2px 2px 12px rgba(128, 128, 128, 0.3); + + list-style: none; + margin: 0; + padding: 0; +} + +.jsoneditor-contextmenu ul li button { + padding: 0; + margin: 0; + width: 124px; + height: 24px; + border: none; + cursor: pointer; + color: #4d4d4d; + background: transparent; + + line-height: 26px; + text-align: left; +} + +/* Fix button padding in firefox */ +.jsoneditor-contextmenu ul li button::-moz-focus-inner { + padding: 0; + border: 0; +} + +.jsoneditor-contextmenu ul li button:hover, +.jsoneditor-contextmenu ul li button:focus { + color: #1a1a1a; + background-color: #f5f5f5; + outline: none; +} + +.jsoneditor-contextmenu ul li button.default { + width: 92px; +} + +.jsoneditor-contextmenu ul li button.expand { + float: right; + width: 32px; + height: 24px; + border-left: 1px solid #e5e5e5; +} + +.jsoneditor-contextmenu div.icon { + float: left; + width: 24px; + height: 24px; + border: none; + padding: 0; + margin: 0; + background-image: url('img/jsoneditor-icons.png'); +} + +.jsoneditor-contextmenu ul li button div.expand { + float: right; + width: 24px; + height: 24px; + padding: 0; + margin: 0 4px 0 0; + background: url('img/jsoneditor-icons.png') 0 -72px; + opacity: 0.4; +} + +.jsoneditor-contextmenu ul li button:hover div.expand, +.jsoneditor-contextmenu ul li button:focus div.expand, +.jsoneditor-contextmenu ul li.selected div.expand, +.jsoneditor-contextmenu ul li button.expand:hover div.expand, +.jsoneditor-contextmenu ul li button.expand:focus div.expand { + opacity: 1; +} + +.jsoneditor-contextmenu .separator { + height: 0; + border-top: 1px solid #e5e5e5; + padding-top: 5px; + margin-top: 5px; +} + +.jsoneditor-contextmenu button.remove > .icon { + background-position: -24px -24px; +} +.jsoneditor-contextmenu button.remove:hover > .icon, +.jsoneditor-contextmenu button.remove:focus > .icon { + background-position: -24px 0; +} + +.jsoneditor-contextmenu button.append > .icon { + background-position: 0 -24px; +} +.jsoneditor-contextmenu button.append:hover > .icon, +.jsoneditor-contextmenu button.append:focus > .icon { + background-position: 0 0; +} + +.jsoneditor-contextmenu button.insert > .icon { + background-position: 0 -24px; +} +.jsoneditor-contextmenu button.insert:hover > .icon, +.jsoneditor-contextmenu button.insert:focus > .icon { + background-position: 0 0; +} + +.jsoneditor-contextmenu button.duplicate > .icon { + background-position: -48px -24px; +} +.jsoneditor-contextmenu button.duplicate:hover > .icon, +.jsoneditor-contextmenu button.duplicate:focus > .icon { + background-position: -48px 0; +} + +.jsoneditor-contextmenu button.sort-asc > .icon { + background-position: -168px -24px; +} +.jsoneditor-contextmenu button.sort-asc:hover > .icon, +.jsoneditor-contextmenu button.sort-asc:focus > .icon { + background-position: -168px 0; +} + +.jsoneditor-contextmenu button.sort-desc > .icon { + background-position: -192px -24px; +} +.jsoneditor-contextmenu button.sort-desc:hover > .icon, +.jsoneditor-contextmenu button.sort-desc:focus > .icon { + background-position: -192px 0; +} + +/* ContextMenu - sub menu */ + +.jsoneditor-contextmenu ul li .selected { + background-color: #D5DDF6; +} + +.jsoneditor-contextmenu ul li { + overflow: hidden; +} + +.jsoneditor-contextmenu ul li ul { + display: none; + position: relative; + left: -10px; + top: 0; + + border: none; + box-shadow: inset 0 0 10px rgba(128, 128, 128, 0.5); + padding: 0 10px; + + /* TODO: transition is not supported on IE8-9 */ + -webkit-transition: all 0.3s ease-out; + -moz-transition: all 0.3s ease-out; + -o-transition: all 0.3s ease-out; + transition: all 0.3s ease-out; +} + +.jsoneditor-contextmenu ul li.selected ul { +} + +.jsoneditor-contextmenu ul li ul li button { + padding-left: 24px; +} + +.jsoneditor-contextmenu ul li ul li button:hover, +.jsoneditor-contextmenu ul li ul li button:focus { + background-color: #f5f5f5; + +} + +.jsoneditor-contextmenu button.type-string > .icon { + background-position: -144px -24px; +} +.jsoneditor-contextmenu button.type-string:hover > .icon, +.jsoneditor-contextmenu button.type-string:focus > .icon, +.jsoneditor-contextmenu button.type-string.selected > .icon{ + background-position: -144px 0; +} + +.jsoneditor-contextmenu button.type-auto > .icon { + background-position: -120px -24px; +} +.jsoneditor-contextmenu button.type-auto:hover > .icon, +.jsoneditor-contextmenu button.type-auto:focus > .icon, +.jsoneditor-contextmenu button.type-auto.selected > .icon { + background-position: -120px 0; +} + +.jsoneditor-contextmenu button.type-object > .icon { + background-position: -72px -24px; +} +.jsoneditor-contextmenu button.type-object:hover > .icon, +.jsoneditor-contextmenu button.type-object:focus > .icon, +.jsoneditor-contextmenu button.type-object.selected > .icon{ + background-position: -72px 0; +} + +.jsoneditor-contextmenu button.type-array > .icon { + background-position: -96px -24px; +} +.jsoneditor-contextmenu button.type-array:hover > .icon, +.jsoneditor-contextmenu button.type-array:focus > .icon, +.jsoneditor-contextmenu button.type-array.selected > .icon{ + background-position: -96px 0; +} + +.jsoneditor-contextmenu button.type-modes > .icon { + background-image: none; + width: 6px; +} diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/img/description.txt b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/img/description.txt new file mode 100644 index 0000000..ad8f3c8 --- /dev/null +++ b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/img/description.txt @@ -0,0 +1,13 @@ +JSON Editor Online Icons + +size: outer: 24x24 px + inner: 16x16 px + +blue background: RGBA 97b0f8ff +gray background: RGBA d3d3d3ff + +red foreground: RGBA ff0000ff +green foreground: RGBA 109618ff + +characters are based on the Arial font + diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/img/export.sh b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/img/export.sh new file mode 100644 index 0000000..8f8c314 --- /dev/null +++ b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/img/export.sh @@ -0,0 +1,16 @@ +#!/bin/sh +# Export the SVG icons to PNG and GIF formats + +echo "Exporting the SVG icons..." + +outputdir=./ +mogrify -format png -background transparent -path $outputdir *.svg +# mogrify -format gif -background transparent -path $outputdir dots_gray.svg +echo "PNG's exported to $outputdir" + +# mogrify -format gif -background transparent -path gif *.svg +# echo "GIF's exported to /gif" +# mogrify -format png -background transparent -path png *.svg +# echo "PNG's exported to /png" + +echo "Done" diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/img/jsoneditor-icons.png b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/img/jsoneditor-icons.png new file mode 100644 index 0000000000000000000000000000000000000000..7120088f9475d17ba3bd5f716bdf8bf4eeb1f32a GIT binary patch literal 14438 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 CdkcvG literal 0 HcmV?d00001 diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/img/jsoneditor-icons.svg b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/img/jsoneditor-icons.svg new file mode 100644 index 0000000..d869225 --- /dev/null +++ b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/img/jsoneditor-icons.svg @@ -0,0 +1,861 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + VALUE + FIELD + + + diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/jsoneditor.css b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/jsoneditor.css new file mode 100644 index 0000000..50ddc91 --- /dev/null +++ b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/jsoneditor.css @@ -0,0 +1,223 @@ + +.jsoneditor .field, +.jsoneditor .value, +.jsoneditor .readonly { + border: 1px solid transparent; + min-height: 16px; + min-width: 32px; + padding: 2px; + margin: 1px; + word-wrap: break-word; + float: left; +} + +/* adjust margin of p elements inside editable divs, needed for Opera, IE */ +.jsoneditor .field p, +.jsoneditor .value p { + margin: 0; +} + +.jsoneditor .value { + word-break: break-word; +} + +.jsoneditor .readonly { + min-width: 16px; + color: gray; +} + +.jsoneditor .empty { + border-color: lightgray; + border-style: dashed; + border-radius: 2px; +} + +.jsoneditor .field.empty { + background-image: url('img/jsoneditor-icons.png'); + background-position: 0 -144px; +} + +.jsoneditor .value.empty { + background-image: url('img/jsoneditor-icons.png'); + background-position: -48px -144px; +} + +.jsoneditor .value.url { + color: green; + text-decoration: underline; +} + +.jsoneditor a.value.url:hover, +.jsoneditor a.value.url:focus { + color: red; +} + +.jsoneditor .separator { + padding: 3px 0; + vertical-align: top; + color: gray; +} + +.jsoneditor .field[contenteditable=true]:focus, +.jsoneditor .field[contenteditable=true]:hover, +.jsoneditor .value[contenteditable=true]:focus, +.jsoneditor .value[contenteditable=true]:hover, +.jsoneditor .field.highlight, +.jsoneditor .value.highlight { + background-color: #FFFFAB; + border: 1px solid yellow; + border-radius: 2px; +} + +.jsoneditor .field.highlight-active, +.jsoneditor .field.highlight-active:focus, +.jsoneditor .field.highlight-active:hover, +.jsoneditor .value.highlight-active, +.jsoneditor .value.highlight-active:focus, +.jsoneditor .value.highlight-active:hover { + background-color: #ffee00; + border: 1px solid #ffc700; + border-radius: 2px; +} + +.jsoneditor div.tree button { + width: 24px; + height: 24px; + padding: 0; + margin: 0; + border: none; + cursor: pointer; + background: transparent url('img/jsoneditor-icons.png'); +} + +.jsoneditor div.tree button.collapsed { + background-position: 0 -48px; +} + +.jsoneditor div.tree button.expanded { + background-position: 0 -72px; +} + +.jsoneditor div.tree button.contextmenu { + background-position: -48px -72px; +} + +.jsoneditor div.tree button.contextmenu:hover, +.jsoneditor div.tree button.contextmenu:focus, +.jsoneditor div.tree button.contextmenu.selected { + background-position: -48px -48px; +} + +.jsoneditor div.tree *:focus { + outline: none; +} + +.jsoneditor div.tree button:focus { + /* TODO: nice outline for buttons with focus + outline: #97B0F8 solid 2px; + box-shadow: 0 0 8px #97B0F8; + */ + background-color: #f5f5f5; + outline: #e5e5e5 solid 1px; +} + +.jsoneditor div.tree button.invisible { + visibility: hidden; + background: none; +} + +.jsoneditor { + color: #1A1A1A; + border: 1px solid #97B0F8; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; + + width: 100%; + height: 100%; + overflow: auto; + position: relative; + padding: 0; + line-height: 100%; +} + + +.jsoneditor div.tree table.tree { + border-collapse: collapse; + border-spacing: 0; + width: 100%; + margin: 0; +} + +.jsoneditor div.outer { + width: 100%; + height: 100%; + margin: -35px 0 0 0; + padding: 35px 0 0 0; + + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; + + overflow: hidden; +} + +.jsoneditor div.tree { + width: 100%; + height: 100%; + position: relative; + overflow: auto; +} + +.jsoneditor textarea.text { + width: 100%; + height: 100%; + margin: 0; + + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; + + border: none; + background-color: white; + resize: none; +} + +.jsoneditor tr.highlight { + background-color: #FFFFAB; +} + +.jsoneditor div.tree button.dragarea { + background: url('img/jsoneditor-icons.png') -72px -72px; + cursor: move; +} + +.jsoneditor div.tree button.dragarea:hover, +.jsoneditor div.tree button.dragarea:focus { + background-position: -72px -48px; +} + +.jsoneditor tr, +.jsoneditor th, +.jsoneditor td { + padding: 0; + margin: 0; +} + +.jsoneditor td { + vertical-align: top; +} + +.jsoneditor td.tree { + vertical-align: top; +} + +.jsoneditor .field, +.jsoneditor .value, +.jsoneditor td, +.jsoneditor th, +.jsoneditor textarea { + font-family: droid sans mono, monospace, courier new, courier, sans-serif; + font-size: 10pt; + color: #1A1A1A; +} diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/menu.css b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/menu.css new file mode 100644 index 0000000..2063b10 --- /dev/null +++ b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/menu.css @@ -0,0 +1,100 @@ + +.jsoneditor .menu { + width: 100%; + height: 35px; + padding: 2px; + margin: 0; + overflow: hidden; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; + + color: #1A1A1A; + background-color: #D5DDF6; + border-bottom: 1px solid #97B0F8; +} + +.jsoneditor .menu button { + width: 26px; + height: 26px; + margin: 2px; + padding: 0; + border-radius: 2px; + border: 1px solid #aec0f8; + background: #e3eaf6 url('img/jsoneditor-icons.png'); + color: #4D4D4D; + opacity: 0.8; + + font-family: arial, sans-serif; + font-size: 10pt; + + float: left; +} + +.jsoneditor .menu button:hover { + background-color: #f0f2f5; +} +.jsoneditor .menu button:focus, +.jsoneditor .menu button:active { + background-color: #ffffff; +} +.jsoneditor .menu button:disabled { + background-color: #e3eaf6; +} + +.jsoneditor .menu button.collapse-all { + background-position: 0 -96px; +} +.jsoneditor .menu button.expand-all { + background-position: 0 -120px; +} +.jsoneditor .menu button.undo { + background-position: -24px -96px; +} +.jsoneditor .menu button.undo:disabled { + background-position: -24px -120px; +} +.jsoneditor .menu button.redo { + background-position: -48px -96px; +} +.jsoneditor .menu button.redo:disabled { + background-position: -48px -120px; +} +.jsoneditor .menu button.compact { + background-position: -72px -96px; +} +.jsoneditor .menu button.format { + background-position: -72px -120px; +} + +.jsoneditor .menu button.modes { + background-image: none; + width: auto; + padding-left: 6px; + padding-right: 6px; +} + +.jsoneditor .menu button.separator { + margin-left: 10px; +} + +.jsoneditor .menu a { + font-family: arial, sans-serif; + font-size: 10pt; + color: #97B0F8; + vertical-align: middle; +} + +.jsoneditor .menu a:hover { + color: red; +} + +.jsoneditor .menu a.poweredBy { + font-size: 8pt; + position: absolute; + right: 0; + top: 0; + padding: 10px; +} + +/* TODO: css for button:disabled is not supported by IE8 */ diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/searchbox.css b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/searchbox.css new file mode 100644 index 0000000..fd5ea88 --- /dev/null +++ b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/css/searchbox.css @@ -0,0 +1,74 @@ + +.jsoneditor .search input, +.jsoneditor .search .results { + font-family: arial, sans-serif; + font-size: 10pt; + color: #1A1A1A; + background: transparent; /* For Firefox */ +} + +.jsoneditor .search { + position: absolute; + right: 2px; + top: 2px; +} + +.jsoneditor .search .frame { + border: 1px solid #97B0F8; + background-color: white; + padding: 0 2px; + margin: 0; +} + +.jsoneditor .search .frame table { + border-collapse: collapse; +} + +.jsoneditor .search input { + width: 120px; + border: none; + outline: none; + margin: 1px; +} + +.jsoneditor .search .results { + color: #4d4d4d; + padding-right: 5px; + line-height: 24px; +} + +.jsoneditor .search button { + width: 16px; + height: 24px; + padding: 0; + margin: 0; + border: none; + background: url('img/jsoneditor-icons.png'); + vertical-align: top; +} + +.jsoneditor .search button:hover { + background-color: transparent; +} + +.jsoneditor .search button.refresh { + width: 18px; + background-position: -99px -73px; +} + +.jsoneditor .search button.next { + cursor: pointer; + background-position: -124px -73px; +} +.jsoneditor .search button.next:hover { + background-position: -124px -49px; +} + +.jsoneditor .search button.previous { + cursor: pointer; + background-position: -148px -73px; + margin-right: 2px; +} +.jsoneditor .search button.previous:hover { + background-position: -148px -49px; +} diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/ContextMenu.js b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/ContextMenu.js new file mode 100644 index 0000000..5fa9935 --- /dev/null +++ b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/ContextMenu.js @@ -0,0 +1,443 @@ +var util = require('./util'); + +/** + * A context menu + * @param {Object[]} items Array containing the menu structure + * TODO: describe structure + * @param {Object} [options] Object with options. Available options: + * {function} close Callback called when the + * context menu is being closed. + * @constructor + */ +function ContextMenu (items, options) { + this.dom = {}; + + var me = this; + var dom = this.dom; + this.anchor = undefined; + this.items = items; + this.eventListeners = {}; + this.selection = undefined; // holds the selection before the menu was opened + this.visibleSubmenu = undefined; + this.onClose = options ? options.close : undefined; + + // create a container element + var menu = document.createElement('div'); + menu.className = 'jsoneditor-contextmenu'; + dom.menu = menu; + + // create a list to hold the menu items + var list = document.createElement('ul'); + list.className = 'menu'; + menu.appendChild(list); + dom.list = list; + dom.items = []; // list with all buttons + + // create a (non-visible) button to set the focus to the menu + var focusButton = document.createElement('button'); + dom.focusButton = focusButton; + var li = document.createElement('li'); + li.style.overflow = 'hidden'; + li.style.height = '0'; + li.appendChild(focusButton); + list.appendChild(li); + + function createMenuItems (list, domItems, items) { + items.forEach(function (item) { + if (item.type == 'separator') { + // create a separator + var separator = document.createElement('div'); + separator.className = 'separator'; + li = document.createElement('li'); + li.appendChild(separator); + list.appendChild(li); + } + else { + var domItem = {}; + + // create a menu item + var li = document.createElement('li'); + list.appendChild(li); + + // create a button in the menu item + var button = document.createElement('button'); + button.className = item.className; + domItem.button = button; + if (item.title) { + button.title = item.title; + } + if (item.click) { + button.onclick = function () { + me.hide(); + item.click(); + }; + } + li.appendChild(button); + + // create the contents of the button + if (item.submenu) { + // add the icon to the button + var divIcon = document.createElement('div'); + divIcon.className = 'icon'; + button.appendChild(divIcon); + button.appendChild(document.createTextNode(item.text)); + + var buttonSubmenu; + if (item.click) { + // submenu and a button with a click handler + button.className += ' default'; + + var buttonExpand = document.createElement('button'); + domItem.buttonExpand = buttonExpand; + buttonExpand.className = 'expand'; + buttonExpand.innerHTML = '
    '; + li.appendChild(buttonExpand); + if (item.submenuTitle) { + buttonExpand.title = item.submenuTitle; + } + + buttonSubmenu = buttonExpand; + } + else { + // submenu and a button without a click handler + var divExpand = document.createElement('div'); + divExpand.className = 'expand'; + button.appendChild(divExpand); + + buttonSubmenu = button; + } + + // attach a handler to expand/collapse the submenu + buttonSubmenu.onclick = function () { + me._onExpandItem(domItem); + buttonSubmenu.focus(); + }; + + // create the submenu + var domSubItems = []; + domItem.subItems = domSubItems; + var ul = document.createElement('ul'); + domItem.ul = ul; + ul.className = 'menu'; + ul.style.height = '0'; + li.appendChild(ul); + createMenuItems(ul, domSubItems, item.submenu); + } + else { + // no submenu, just a button with clickhandler + button.innerHTML = '
    ' + item.text; + } + + domItems.push(domItem); + } + }); + } + createMenuItems(list, this.dom.items, items); + + // TODO: when the editor is small, show the submenu on the right instead of inline? + + // calculate the max height of the menu with one submenu expanded + this.maxHeight = 0; // height in pixels + items.forEach(function (item) { + var height = (items.length + (item.submenu ? item.submenu.length : 0)) * 24; + me.maxHeight = Math.max(me.maxHeight, height); + }); +} + +/** + * Get the currently visible buttons + * @return {Array.} buttons + * @private + */ +ContextMenu.prototype._getVisibleButtons = function () { + var buttons = []; + var me = this; + this.dom.items.forEach(function (item) { + buttons.push(item.button); + if (item.buttonExpand) { + buttons.push(item.buttonExpand); + } + if (item.subItems && item == me.expandedItem) { + item.subItems.forEach(function (subItem) { + buttons.push(subItem.button); + if (subItem.buttonExpand) { + buttons.push(subItem.buttonExpand); + } + // TODO: change to fully recursive method + }); + } + }); + + return buttons; +}; + +// currently displayed context menu, a singleton. We may only have one visible context menu +ContextMenu.visibleMenu = undefined; + +/** + * Attach the menu to an anchor + * @param {HTMLElement} anchor + */ +ContextMenu.prototype.show = function (anchor) { + this.hide(); + + // calculate whether the menu fits below the anchor + var windowHeight = window.innerHeight, + windowScroll = (window.pageYOffset || document.scrollTop || 0), + windowBottom = windowHeight + windowScroll, + anchorHeight = anchor.offsetHeight, + menuHeight = this.maxHeight; + + // position the menu + var left = util.getAbsoluteLeft(anchor); + var top = util.getAbsoluteTop(anchor); + if (top + anchorHeight + menuHeight < windowBottom) { + // display the menu below the anchor + this.dom.menu.style.left = left + 'px'; + this.dom.menu.style.top = (top + anchorHeight) + 'px'; + this.dom.menu.style.bottom = ''; + } + else { + // display the menu above the anchor + this.dom.menu.style.left = left + 'px'; + this.dom.menu.style.top = ''; + this.dom.menu.style.bottom = (windowHeight - top) + 'px'; + } + + // attach the menu to the document + document.body.appendChild(this.dom.menu); + + // create and attach event listeners + var me = this; + var list = this.dom.list; + this.eventListeners.mousedown = util.addEventListener( + document, 'mousedown', function (event) { + // hide menu on click outside of the menu + var target = event.target; + if ((target != list) && !me._isChildOf(target, list)) { + me.hide(); + event.stopPropagation(); + event.preventDefault(); + } + }); + this.eventListeners.mousewheel = util.addEventListener( + document, 'mousewheel', function (event) { + // block scrolling when context menu is visible + event.stopPropagation(); + event.preventDefault(); + }); + this.eventListeners.keydown = util.addEventListener( + document, 'keydown', function (event) { + me._onKeyDown(event); + }); + + // move focus to the first button in the context menu + this.selection = util.getSelection(); + this.anchor = anchor; + setTimeout(function () { + me.dom.focusButton.focus(); + }, 0); + + if (ContextMenu.visibleMenu) { + ContextMenu.visibleMenu.hide(); + } + ContextMenu.visibleMenu = this; +}; + +/** + * Hide the context menu if visible + */ +ContextMenu.prototype.hide = function () { + // remove the menu from the DOM + if (this.dom.menu.parentNode) { + this.dom.menu.parentNode.removeChild(this.dom.menu); + if (this.onClose) { + this.onClose(); + } + } + + // remove all event listeners + // all event listeners are supposed to be attached to document. + for (var name in this.eventListeners) { + if (this.eventListeners.hasOwnProperty(name)) { + var fn = this.eventListeners[name]; + if (fn) { + util.removeEventListener(document, name, fn); + } + delete this.eventListeners[name]; + } + } + + if (ContextMenu.visibleMenu == this) { + ContextMenu.visibleMenu = undefined; + } +}; + +/** + * Expand a submenu + * Any currently expanded submenu will be hided. + * @param {Object} domItem + * @private + */ +ContextMenu.prototype._onExpandItem = function (domItem) { + var me = this; + var alreadyVisible = (domItem == this.expandedItem); + + // hide the currently visible submenu + var expandedItem = this.expandedItem; + if (expandedItem) { + //var ul = expandedItem.ul; + expandedItem.ul.style.height = '0'; + expandedItem.ul.style.padding = ''; + setTimeout(function () { + if (me.expandedItem != expandedItem) { + expandedItem.ul.style.display = ''; + util.removeClassName(expandedItem.ul.parentNode, 'selected'); + } + }, 300); // timeout duration must match the css transition duration + this.expandedItem = undefined; + } + + if (!alreadyVisible) { + var ul = domItem.ul; + ul.style.display = 'block'; + var height = ul.clientHeight; // force a reflow in Firefox + setTimeout(function () { + if (me.expandedItem == domItem) { + ul.style.height = (ul.childNodes.length * 24) + 'px'; + ul.style.padding = '5px 10px'; + } + }, 0); + util.addClassName(ul.parentNode, 'selected'); + this.expandedItem = domItem; + } +}; + +/** + * Handle onkeydown event + * @param {Event} event + * @private + */ +ContextMenu.prototype._onKeyDown = function (event) { + var target = event.target; + var keynum = event.which; + var handled = false; + var buttons, targetIndex, prevButton, nextButton; + + if (keynum == 27) { // ESC + // hide the menu on ESC key + + // restore previous selection and focus + if (this.selection) { + util.setSelection(this.selection); + } + if (this.anchor) { + this.anchor.focus(); + } + + this.hide(); + + handled = true; + } + else if (keynum == 9) { // Tab + if (!event.shiftKey) { // Tab + buttons = this._getVisibleButtons(); + targetIndex = buttons.indexOf(target); + if (targetIndex == buttons.length - 1) { + // move to first button + buttons[0].focus(); + handled = true; + } + } + else { // Shift+Tab + buttons = this._getVisibleButtons(); + targetIndex = buttons.indexOf(target); + if (targetIndex == 0) { + // move to last button + buttons[buttons.length - 1].focus(); + handled = true; + } + } + } + else if (keynum == 37) { // Arrow Left + if (target.className == 'expand') { + buttons = this._getVisibleButtons(); + targetIndex = buttons.indexOf(target); + prevButton = buttons[targetIndex - 1]; + if (prevButton) { + prevButton.focus(); + } + } + handled = true; + } + else if (keynum == 38) { // Arrow Up + buttons = this._getVisibleButtons(); + targetIndex = buttons.indexOf(target); + prevButton = buttons[targetIndex - 1]; + if (prevButton && prevButton.className == 'expand') { + // skip expand button + prevButton = buttons[targetIndex - 2]; + } + if (!prevButton) { + // move to last button + prevButton = buttons[buttons.length - 1]; + } + if (prevButton) { + prevButton.focus(); + } + handled = true; + } + else if (keynum == 39) { // Arrow Right + buttons = this._getVisibleButtons(); + targetIndex = buttons.indexOf(target); + nextButton = buttons[targetIndex + 1]; + if (nextButton && nextButton.className == 'expand') { + nextButton.focus(); + } + handled = true; + } + else if (keynum == 40) { // Arrow Down + buttons = this._getVisibleButtons(); + targetIndex = buttons.indexOf(target); + nextButton = buttons[targetIndex + 1]; + if (nextButton && nextButton.className == 'expand') { + // skip expand button + nextButton = buttons[targetIndex + 2]; + } + if (!nextButton) { + // move to first button + nextButton = buttons[0]; + } + if (nextButton) { + nextButton.focus(); + handled = true; + } + handled = true; + } + // TODO: arrow left and right + + if (handled) { + event.stopPropagation(); + event.preventDefault(); + } +}; + +/** + * Test if an element is a child of a parent element. + * @param {Element} child + * @param {Element} parent + * @return {boolean} isChild + */ +ContextMenu.prototype._isChildOf = function (child, parent) { + var e = child.parentNode; + while (e) { + if (e == parent) { + return true; + } + e = e.parentNode; + } + + return false; +}; + +module.exports = ContextMenu; diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/Highlighter.js b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/Highlighter.js new file mode 100644 index 0000000..ece99e6 --- /dev/null +++ b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/Highlighter.js @@ -0,0 +1,84 @@ +/** + * The highlighter can highlight/unhighlight a node, and + * animate the visibility of a context menu. + * @constructor Highlighter + */ +function Highlighter () { + this.locked = false; +} + +/** + * Hightlight given node and its childs + * @param {Node} node + */ +Highlighter.prototype.highlight = function (node) { + if (this.locked) { + return; + } + + if (this.node != node) { + // unhighlight current node + if (this.node) { + this.node.setHighlight(false); + } + + // highlight new node + this.node = node; + this.node.setHighlight(true); + } + + // cancel any current timeout + this._cancelUnhighlight(); +}; + +/** + * Unhighlight currently highlighted node. + * Will be done after a delay + */ +Highlighter.prototype.unhighlight = function () { + if (this.locked) { + return; + } + + var me = this; + if (this.node) { + this._cancelUnhighlight(); + + // do the unhighlighting after a small delay, to prevent re-highlighting + // the same node when moving from the drag-icon to the contextmenu-icon + // or vice versa. + this.unhighlightTimer = setTimeout(function () { + me.node.setHighlight(false); + me.node = undefined; + me.unhighlightTimer = undefined; + }, 0); + } +}; + +/** + * Cancel an unhighlight action (if before the timeout of the unhighlight action) + * @private + */ +Highlighter.prototype._cancelUnhighlight = function () { + if (this.unhighlightTimer) { + clearTimeout(this.unhighlightTimer); + this.unhighlightTimer = undefined; + } +}; + +/** + * Lock highlighting or unhighlighting nodes. + * methods highlight and unhighlight do not work while locked. + */ +Highlighter.prototype.lock = function () { + this.locked = true; +}; + +/** + * Unlock highlighting or unhighlighting nodes + */ +Highlighter.prototype.unlock = function () { + this.locked = false; +}; + +module.exports = Highlighter; diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/History.js b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/History.js new file mode 100644 index 0000000..d195a36 --- /dev/null +++ b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/History.js @@ -0,0 +1,222 @@ +var util = require('./util'); + +/** + * @constructor History + * Store action history, enables undo and redo + * @param {JSONEditor} editor + */ +function History (editor) { + this.editor = editor; + this.clear(); + + // map with all supported actions + this.actions = { + 'editField': { + 'undo': function (params) { + params.node.updateField(params.oldValue); + }, + 'redo': function (params) { + params.node.updateField(params.newValue); + } + }, + 'editValue': { + 'undo': function (params) { + params.node.updateValue(params.oldValue); + }, + 'redo': function (params) { + params.node.updateValue(params.newValue); + } + }, + 'appendNode': { + 'undo': function (params) { + params.parent.removeChild(params.node); + }, + 'redo': function (params) { + params.parent.appendChild(params.node); + } + }, + 'insertBeforeNode': { + 'undo': function (params) { + params.parent.removeChild(params.node); + }, + 'redo': function (params) { + params.parent.insertBefore(params.node, params.beforeNode); + } + }, + 'insertAfterNode': { + 'undo': function (params) { + params.parent.removeChild(params.node); + }, + 'redo': function (params) { + params.parent.insertAfter(params.node, params.afterNode); + } + }, + 'removeNode': { + 'undo': function (params) { + var parent = params.parent; + var beforeNode = parent.childs[params.index] || parent.append; + parent.insertBefore(params.node, beforeNode); + }, + 'redo': function (params) { + params.parent.removeChild(params.node); + } + }, + 'duplicateNode': { + 'undo': function (params) { + params.parent.removeChild(params.clone); + }, + 'redo': function (params) { + params.parent.insertAfter(params.clone, params.node); + } + }, + 'changeType': { + 'undo': function (params) { + params.node.changeType(params.oldType); + }, + 'redo': function (params) { + params.node.changeType(params.newType); + } + }, + 'moveNode': { + 'undo': function (params) { + params.startParent.moveTo(params.node, params.startIndex); + }, + 'redo': function (params) { + params.endParent.moveTo(params.node, params.endIndex); + } + }, + 'sort': { + 'undo': function (params) { + var node = params.node; + node.hideChilds(); + node.sort = params.oldSort; + node.childs = params.oldChilds; + node.showChilds(); + }, + 'redo': function (params) { + var node = params.node; + node.hideChilds(); + node.sort = params.newSort; + node.childs = params.newChilds; + node.showChilds(); + } + } + + // TODO: restore the original caret position and selection with each undo + // TODO: implement history for actions "expand", "collapse", "scroll", "setDocument" + }; +} + +/** + * The method onChange is executed when the History is changed, and can + * be overloaded. + */ +History.prototype.onChange = function () {}; + +/** + * Add a new action to the history + * @param {String} action The executed action. Available actions: "editField", + * "editValue", "changeType", "appendNode", + * "removeNode", "duplicateNode", "moveNode" + * @param {Object} params Object containing parameters describing the change. + * The parameters in params depend on the action (for + * example for "editValue" the Node, old value, and new + * value are provided). params contains all information + * needed to undo or redo the action. + */ +History.prototype.add = function (action, params) { + this.index++; + this.history[this.index] = { + 'action': action, + 'params': params, + 'timestamp': new Date() + }; + + // remove redo actions which are invalid now + if (this.index < this.history.length - 1) { + this.history.splice(this.index + 1, this.history.length - this.index - 1); + } + + // fire onchange event + this.onChange(); +}; + +/** + * Clear history + */ +History.prototype.clear = function () { + this.history = []; + this.index = -1; + + // fire onchange event + this.onChange(); +}; + +/** + * Check if there is an action available for undo + * @return {Boolean} canUndo + */ +History.prototype.canUndo = function () { + return (this.index >= 0); +}; + +/** + * Check if there is an action available for redo + * @return {Boolean} canRedo + */ +History.prototype.canRedo = function () { + return (this.index < this.history.length - 1); +}; + +/** + * Undo the last action + */ +History.prototype.undo = function () { + if (this.canUndo()) { + var obj = this.history[this.index]; + if (obj) { + var action = this.actions[obj.action]; + if (action && action.undo) { + action.undo(obj.params); + if (obj.params.oldSelection) { + this.editor.setSelection(obj.params.oldSelection); + } + } + else { + util.log('Error: unknown action "' + obj.action + '"'); + } + } + this.index--; + + // fire onchange event + this.onChange(); + } +}; + +/** + * Redo the last action + */ +History.prototype.redo = function () { + if (this.canRedo()) { + this.index++; + + var obj = this.history[this.index]; + if (obj) { + var action = this.actions[obj.action]; + if (action && action.redo) { + action.redo(obj.params); + if (obj.params.newSelection) { + this.editor.setSelection(obj.params.newSelection); + } + } + else { + util.log('Error: unknown action "' + obj.action + '"'); + } + } + + // fire onchange event + this.onChange(); + } +}; + +module.exports = History; diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/JSONEditor.js b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/JSONEditor.js new file mode 100644 index 0000000..a23e769 --- /dev/null +++ b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/JSONEditor.js @@ -0,0 +1,262 @@ +var treemode = require('./treemode'); +var textmode = require('./textmode'); +var util = require('./util'); + +/** + * @constructor JSONEditor + * @param {Element} container Container element + * @param {Object} [options] Object with options. available options: + * {String} mode Editor mode. Available values: + * 'tree' (default), 'view', + * 'form', 'text', and 'code'. + * {function} change Callback method, triggered + * on change of contents + * {Boolean} search Enable search box. + * True by default + * Only applicable for modes + * 'tree', 'view', and 'form' + * {Boolean} history Enable history (undo/redo). + * True by default + * Only applicable for modes + * 'tree', 'view', and 'form' + * {String} name Field name for the root node. + * Only applicable for modes + * 'tree', 'view', and 'form' + * {Number} indentation Number of indentation + * spaces. 4 by default. + * Only applicable for + * modes 'text' and 'code' + * @param {Object | undefined} json JSON object + */ +function JSONEditor (container, options, json) { + if (!(this instanceof JSONEditor)) { + throw new Error('JSONEditor constructor called without "new".'); + } + + // check for unsupported browser (IE8 and older) + var ieVersion = util.getInternetExplorerVersion(); + if (ieVersion != -1 && ieVersion < 9) { + throw new Error('Unsupported browser, IE9 or newer required. ' + + 'Please install the newest version of your browser.'); + } + + if (arguments.length) { + this._create(container, options, json); + } +} + +/** + * Configuration for all registered modes. Example: + * { + * tree: { + * mixin: TreeEditor, + * data: 'json' + * }, + * text: { + * mixin: TextEditor, + * data: 'text' + * } + * } + * + * @type { Object. } + */ +JSONEditor.modes = {}; + +/** + * Create the JSONEditor + * @param {Element} container Container element + * @param {Object} [options] See description in constructor + * @param {Object | undefined} json JSON object + * @private + */ +JSONEditor.prototype._create = function (container, options, json) { + this.container = container; + this.options = options || {}; + this.json = json || {}; + + var mode = this.options.mode || 'tree'; + this.setMode(mode); +}; + +/** + * Detach the editor from the DOM + * @private + */ +JSONEditor.prototype._delete = function () {}; + +/** + * Set JSON object in editor + * @param {Object | undefined} json JSON data + */ +JSONEditor.prototype.set = function (json) { + this.json = json; +}; + +/** + * Get JSON from the editor + * @returns {Object} json + */ +JSONEditor.prototype.get = function () { + return this.json; +}; + +/** + * Set string containing JSON for the editor + * @param {String | undefined} jsonText + */ +JSONEditor.prototype.setText = function (jsonText) { + this.json = util.parse(jsonText); +}; + +/** + * Get stringified JSON contents from the editor + * @returns {String} jsonText + */ +JSONEditor.prototype.getText = function () { + return JSON.stringify(this.json); +}; + +/** + * Set a field name for the root node. + * @param {String | undefined} name + */ +JSONEditor.prototype.setName = function (name) { + if (!this.options) { + this.options = {}; + } + this.options.name = name; +}; + +/** + * Get the field name for the root node. + * @return {String | undefined} name + */ +JSONEditor.prototype.getName = function () { + return this.options && this.options.name; +}; + +/** + * Change the mode of the editor. + * JSONEditor will be extended with all methods needed for the chosen mode. + * @param {String} mode Available modes: 'tree' (default), 'view', 'form', + * 'text', and 'code'. + */ +JSONEditor.prototype.setMode = function (mode) { + var container = this.container, + options = util.extend({}, this.options), + data, + name; + + options.mode = mode; + var config = JSONEditor.modes[mode]; + if (config) { + try { + var asText = (config.data == 'text'); + name = this.getName(); + data = this[asText ? 'getText' : 'get'](); // get text or json + + this._delete(); + util.clear(this); + util.extend(this, config.mixin); + this.create(container, options); + + this.setName(name); + this[asText ? 'setText' : 'set'](data); // set text or json + + if (typeof config.load === 'function') { + try { + config.load.call(this); + } + catch (err) {} + } + } + catch (err) { + this._onError(err); + } + } + else { + throw new Error('Unknown mode "' + options.mode + '"'); + } +}; + +/** + * Throw an error. If an error callback is configured in options.error, this + * callback will be invoked. Else, a regular error is thrown. + * @param {Error} err + * @private + */ +JSONEditor.prototype._onError = function(err) { + // TODO: onError is deprecated since version 2.2.0. cleanup some day + if (typeof this.onError === 'function') { + util.log('WARNING: JSONEditor.onError is deprecated. ' + + 'Use options.error instead.'); + this.onError(err); + } + + if (this.options && typeof this.options.error === 'function') { + this.options.error(err); + } + else { + throw err; + } +}; + +/** + * Register a plugin with one ore multiple modes for the JSON Editor. + * + * A mode is described as an object with properties: + * + * - `mode: String` The name of the mode. + * - `mixin: Object` An object containing the mixin functions which + * will be added to the JSONEditor. Must contain functions + * create, get, getText, set, and setText. May have + * additional functions. + * When the JSONEditor switches to a mixin, all mixin + * functions are added to the JSONEditor, and then + * the function `create(container, options)` is executed. + * - `data: 'text' | 'json'` The type of data that will be used to load the mixin. + * - `[load: function]` An optional function called after the mixin + * has been loaded. + * + * @param {Object | Array} mode A mode object or an array with multiple mode objects. + */ +JSONEditor.registerMode = function (mode) { + var i, prop; + + if (util.isArray(mode)) { + // multiple modes + for (i = 0; i < mode.length; i++) { + JSONEditor.registerMode(mode[i]); + } + } + else { + // validate the new mode + if (!('mode' in mode)) throw new Error('Property "mode" missing'); + if (!('mixin' in mode)) throw new Error('Property "mixin" missing'); + if (!('data' in mode)) throw new Error('Property "data" missing'); + var name = mode.mode; + if (name in JSONEditor.modes) { + throw new Error('Mode "' + name + '" already registered'); + } + + // validate the mixin + if (typeof mode.mixin.create !== 'function') { + throw new Error('Required function "create" missing on mixin'); + } + var reserved = ['setMode', 'registerMode', 'modes']; + for (i = 0; i < reserved.length; i++) { + prop = reserved[i]; + if (prop in mode.mixin) { + throw new Error('Reserved property "' + prop + '" not allowed in mixin'); + } + } + + JSONEditor.modes[name] = mode; + } +}; + +// register tree and text modes +JSONEditor.registerMode(treemode); +JSONEditor.registerMode(textmode); + +module.exports = JSONEditor; diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/Node.js b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/Node.js new file mode 100644 index 0000000..7588390 --- /dev/null +++ b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/Node.js @@ -0,0 +1,2929 @@ +var ContextMenu = require('./ContextMenu'); +var appendNodeFactory = require('./appendNodeFactory'); +var util = require('./util'); + +/** + * @constructor Node + * Create a new Node + * @param {TreeEditor} editor + * @param {Object} [params] Can contain parameters: + * {string} field + * {boolean} fieldEditable + * {*} value + * {String} type Can have values 'auto', 'array', + * 'object', or 'string'. + */ +function Node (editor, params) { + /** @type {TreeEditor} */ + this.editor = editor; + this.dom = {}; + this.expanded = false; + + if(params && (params instanceof Object)) { + this.setField(params.field, params.fieldEditable); + this.setValue(params.value, params.type); + } + else { + this.setField(''); + this.setValue(null); + } +} + +/** + * Determine whether the field and/or value of this node are editable + * @private + */ +Node.prototype._updateEditability = function () { + this.editable = { + field: true, + value: true + }; + + if (this.editor) { + this.editable.field = this.editor.options.mode === 'tree'; + this.editable.value = this.editor.options.mode !== 'view'; + + if (this.editor.options.mode === 'tree' && (typeof this.editor.options.editable === 'function')) { + var editable = this.editor.options.editable({ + field: this.field, + value: this.value, + path: this.path() + }); + + if (typeof editable === 'boolean') { + this.editable.field = editable; + this.editable.value = editable; + } + else { + if (typeof editable.field === 'boolean') this.editable.field = editable.field; + if (typeof editable.value === 'boolean') this.editable.value = editable.value; + } + } + } +}; + +/** + * Get the path of this node + * @return {String[]} Array containing the path to this node + */ +Node.prototype.path = function () { + var node = this; + var path = []; + while (node) { + var field = node.field != undefined ? node.field : node.index; + if (field !== undefined) { + path.unshift(field); + } + node = node.parent; + } + return path; +}; + +/** + * Set parent node + * @param {Node} parent + */ +Node.prototype.setParent = function(parent) { + this.parent = parent; +}; + +/** + * Set field + * @param {String} field + * @param {boolean} [fieldEditable] + */ +Node.prototype.setField = function(field, fieldEditable) { + this.field = field; + this.fieldEditable = (fieldEditable === true); +}; + +/** + * Get field + * @return {String} + */ +Node.prototype.getField = function() { + if (this.field === undefined) { + this._getDomField(); + } + + return this.field; +}; + +/** + * Set value. Value is a JSON structure or an element String, Boolean, etc. + * @param {*} value + * @param {String} [type] Specify the type of the value. Can be 'auto', + * 'array', 'object', or 'string' + */ +Node.prototype.setValue = function(value, type) { + var childValue, child; + + // first clear all current childs (if any) + var childs = this.childs; + if (childs) { + while (childs.length) { + this.removeChild(childs[0]); + } + } + + // TODO: remove the DOM of this Node + + this.type = this._getType(value); + + // check if type corresponds with the provided type + if (type && type != this.type) { + if (type == 'string' && this.type == 'auto') { + this.type = type; + } + else { + throw new Error('Type mismatch: ' + + 'cannot cast value of type "' + this.type + + ' to the specified type "' + type + '"'); + } + } + + if (this.type == 'array') { + // array + this.childs = []; + for (var i = 0, iMax = value.length; i < iMax; i++) { + childValue = value[i]; + if (childValue !== undefined && !(childValue instanceof Function)) { + // ignore undefined and functions + child = new Node(this.editor, { + value: childValue + }); + this.appendChild(child); + } + } + this.value = ''; + } + else if (this.type == 'object') { + // object + this.childs = []; + for (var childField in value) { + if (value.hasOwnProperty(childField)) { + childValue = value[childField]; + if (childValue !== undefined && !(childValue instanceof Function)) { + // ignore undefined and functions + child = new Node(this.editor, { + field: childField, + value: childValue + }); + this.appendChild(child); + } + } + } + this.value = ''; + } + else { + // value + this.childs = undefined; + this.value = value; + /* TODO + if (typeof(value) == 'string') { + var escValue = JSON.stringify(value); + this.value = escValue.substring(1, escValue.length - 1); + util.log('check', value, this.value); + } + else { + this.value = value; + } + */ + } +}; + +/** + * Get value. Value is a JSON structure + * @return {*} value + */ +Node.prototype.getValue = function() { + //var childs, i, iMax; + + if (this.type == 'array') { + var arr = []; + this.childs.forEach (function (child) { + arr.push(child.getValue()); + }); + return arr; + } + else if (this.type == 'object') { + var obj = {}; + this.childs.forEach (function (child) { + obj[child.getField()] = child.getValue(); + }); + return obj; + } + else { + if (this.value === undefined) { + this._getDomValue(); + } + + return this.value; + } +}; + +/** + * Get the nesting level of this node + * @return {Number} level + */ +Node.prototype.getLevel = function() { + return (this.parent ? this.parent.getLevel() + 1 : 0); +}; + +/** + * Create a clone of a node + * The complete state of a clone is copied, including whether it is expanded or + * not. The DOM elements are not cloned. + * @return {Node} clone + */ +Node.prototype.clone = function() { + var clone = new Node(this.editor); + clone.type = this.type; + clone.field = this.field; + clone.fieldInnerText = this.fieldInnerText; + clone.fieldEditable = this.fieldEditable; + clone.value = this.value; + clone.valueInnerText = this.valueInnerText; + clone.expanded = this.expanded; + + if (this.childs) { + // an object or array + var cloneChilds = []; + this.childs.forEach(function (child) { + var childClone = child.clone(); + childClone.setParent(clone); + cloneChilds.push(childClone); + }); + clone.childs = cloneChilds; + } + else { + // a value + clone.childs = undefined; + } + + return clone; +}; + +/** + * Expand this node and optionally its childs. + * @param {boolean} [recurse] Optional recursion, true by default. When + * true, all childs will be expanded recursively + */ +Node.prototype.expand = function(recurse) { + if (!this.childs) { + return; + } + + // set this node expanded + this.expanded = true; + if (this.dom.expand) { + this.dom.expand.className = 'expanded'; + } + + this.showChilds(); + + if (recurse !== false) { + this.childs.forEach(function (child) { + child.expand(recurse); + }); + } +}; + +/** + * Collapse this node and optionally its childs. + * @param {boolean} [recurse] Optional recursion, true by default. When + * true, all childs will be collapsed recursively + */ +Node.prototype.collapse = function(recurse) { + if (!this.childs) { + return; + } + + this.hideChilds(); + + // collapse childs in case of recurse + if (recurse !== false) { + this.childs.forEach(function (child) { + child.collapse(recurse); + }); + + } + + // make this node collapsed + if (this.dom.expand) { + this.dom.expand.className = 'collapsed'; + } + this.expanded = false; +}; + +/** + * Recursively show all childs when they are expanded + */ +Node.prototype.showChilds = function() { + var childs = this.childs; + if (!childs) { + return; + } + if (!this.expanded) { + return; + } + + var tr = this.dom.tr; + var table = tr ? tr.parentNode : undefined; + if (table) { + // show row with append button + var append = this.getAppend(); + var nextTr = tr.nextSibling; + if (nextTr) { + table.insertBefore(append, nextTr); + } + else { + table.appendChild(append); + } + + // show childs + this.childs.forEach(function (child) { + table.insertBefore(child.getDom(), append); + child.showChilds(); + }); + } +}; + +/** + * Hide the node with all its childs + */ +Node.prototype.hide = function() { + var tr = this.dom.tr; + var table = tr ? tr.parentNode : undefined; + if (table) { + table.removeChild(tr); + } + this.hideChilds(); +}; + + +/** + * Recursively hide all childs + */ +Node.prototype.hideChilds = function() { + var childs = this.childs; + if (!childs) { + return; + } + if (!this.expanded) { + return; + } + + // hide append row + var append = this.getAppend(); + if (append.parentNode) { + append.parentNode.removeChild(append); + } + + // hide childs + this.childs.forEach(function (child) { + child.hide(); + }); +}; + + +/** + * Add a new child to the node. + * Only applicable when Node value is of type array or object + * @param {Node} node + */ +Node.prototype.appendChild = function(node) { + if (this._hasChilds()) { + // adjust the link to the parent + node.setParent(this); + node.fieldEditable = (this.type == 'object'); + if (this.type == 'array') { + node.index = this.childs.length; + } + this.childs.push(node); + + if (this.expanded) { + // insert into the DOM, before the appendRow + var newTr = node.getDom(); + var appendTr = this.getAppend(); + var table = appendTr ? appendTr.parentNode : undefined; + if (appendTr && table) { + table.insertBefore(newTr, appendTr); + } + + node.showChilds(); + } + + this.updateDom({'updateIndexes': true}); + node.updateDom({'recurse': true}); + } +}; + + +/** + * Move a node from its current parent to this node + * Only applicable when Node value is of type array or object + * @param {Node} node + * @param {Node} beforeNode + */ +Node.prototype.moveBefore = function(node, beforeNode) { + if (this._hasChilds()) { + // create a temporary row, to prevent the scroll position from jumping + // when removing the node + var tbody = (this.dom.tr) ? this.dom.tr.parentNode : undefined; + if (tbody) { + var trTemp = document.createElement('tr'); + trTemp.style.height = tbody.clientHeight + 'px'; + tbody.appendChild(trTemp); + } + + if (node.parent) { + node.parent.removeChild(node); + } + + if (beforeNode instanceof AppendNode) { + this.appendChild(node); + } + else { + this.insertBefore(node, beforeNode); + } + + if (tbody) { + tbody.removeChild(trTemp); + } + } +}; + +/** + * Move a node from its current parent to this node + * Only applicable when Node value is of type array or object. + * If index is out of range, the node will be appended to the end + * @param {Node} node + * @param {Number} index + */ +Node.prototype.moveTo = function (node, index) { + if (node.parent == this) { + // same parent + var currentIndex = this.childs.indexOf(node); + if (currentIndex < index) { + // compensate the index for removal of the node itself + index++; + } + } + + var beforeNode = this.childs[index] || this.append; + this.moveBefore(node, beforeNode); +}; + +/** + * Insert a new child before a given node + * Only applicable when Node value is of type array or object + * @param {Node} node + * @param {Node} beforeNode + */ +Node.prototype.insertBefore = function(node, beforeNode) { + if (this._hasChilds()) { + if (beforeNode == this.append) { + // append to the child nodes + + // adjust the link to the parent + node.setParent(this); + node.fieldEditable = (this.type == 'object'); + this.childs.push(node); + } + else { + // insert before a child node + var index = this.childs.indexOf(beforeNode); + if (index == -1) { + throw new Error('Node not found'); + } + + // adjust the link to the parent + node.setParent(this); + node.fieldEditable = (this.type == 'object'); + this.childs.splice(index, 0, node); + } + + if (this.expanded) { + // insert into the DOM + var newTr = node.getDom(); + var nextTr = beforeNode.getDom(); + var table = nextTr ? nextTr.parentNode : undefined; + if (nextTr && table) { + table.insertBefore(newTr, nextTr); + } + + node.showChilds(); + } + + this.updateDom({'updateIndexes': true}); + node.updateDom({'recurse': true}); + } +}; + +/** + * Insert a new child before a given node + * Only applicable when Node value is of type array or object + * @param {Node} node + * @param {Node} afterNode + */ +Node.prototype.insertAfter = function(node, afterNode) { + if (this._hasChilds()) { + var index = this.childs.indexOf(afterNode); + var beforeNode = this.childs[index + 1]; + if (beforeNode) { + this.insertBefore(node, beforeNode); + } + else { + this.appendChild(node); + } + } +}; + +/** + * Search in this node + * The node will be expanded when the text is found one of its childs, else + * it will be collapsed. Searches are case insensitive. + * @param {String} text + * @return {Node[]} results Array with nodes containing the search text + */ +Node.prototype.search = function(text) { + var results = []; + var index; + var search = text ? text.toLowerCase() : undefined; + + // delete old search data + delete this.searchField; + delete this.searchValue; + + // search in field + if (this.field != undefined) { + var field = String(this.field).toLowerCase(); + index = field.indexOf(search); + if (index != -1) { + this.searchField = true; + results.push({ + 'node': this, + 'elem': 'field' + }); + } + + // update dom + this._updateDomField(); + } + + // search in value + if (this._hasChilds()) { + // array, object + + // search the nodes childs + if (this.childs) { + var childResults = []; + this.childs.forEach(function (child) { + childResults = childResults.concat(child.search(text)); + }); + results = results.concat(childResults); + } + + // update dom + if (search != undefined) { + var recurse = false; + if (childResults.length == 0) { + this.collapse(recurse); + } + else { + this.expand(recurse); + } + } + } + else { + // string, auto + if (this.value != undefined ) { + var value = String(this.value).toLowerCase(); + index = value.indexOf(search); + if (index != -1) { + this.searchValue = true; + results.push({ + 'node': this, + 'elem': 'value' + }); + } + } + + // update dom + this._updateDomValue(); + } + + return results; +}; + +/** + * Move the scroll position such that this node is in the visible area. + * The node will not get the focus + * @param {function(boolean)} [callback] + */ +Node.prototype.scrollTo = function(callback) { + if (!this.dom.tr || !this.dom.tr.parentNode) { + // if the node is not visible, expand its parents + var parent = this.parent; + var recurse = false; + while (parent) { + parent.expand(recurse); + parent = parent.parent; + } + } + + if (this.dom.tr && this.dom.tr.parentNode) { + this.editor.scrollTo(this.dom.tr.offsetTop, callback); + } +}; + + +// stores the element name currently having the focus +Node.focusElement = undefined; + +/** + * Set focus to this node + * @param {String} [elementName] The field name of the element to get the + * focus available values: 'drag', 'menu', + * 'expand', 'field', 'value' (default) + */ +Node.prototype.focus = function(elementName) { + Node.focusElement = elementName; + + if (this.dom.tr && this.dom.tr.parentNode) { + var dom = this.dom; + + switch (elementName) { + case 'drag': + if (dom.drag) { + dom.drag.focus(); + } + else { + dom.menu.focus(); + } + break; + + case 'menu': + dom.menu.focus(); + break; + + case 'expand': + if (this._hasChilds()) { + dom.expand.focus(); + } + else if (dom.field && this.fieldEditable) { + dom.field.focus(); + util.selectContentEditable(dom.field); + } + else if (dom.value && !this._hasChilds()) { + dom.value.focus(); + util.selectContentEditable(dom.value); + } + else { + dom.menu.focus(); + } + break; + + case 'field': + if (dom.field && this.fieldEditable) { + dom.field.focus(); + util.selectContentEditable(dom.field); + } + else if (dom.value && !this._hasChilds()) { + dom.value.focus(); + util.selectContentEditable(dom.value); + } + else if (this._hasChilds()) { + dom.expand.focus(); + } + else { + dom.menu.focus(); + } + break; + + case 'value': + default: + if (dom.value && !this._hasChilds()) { + dom.value.focus(); + util.selectContentEditable(dom.value); + } + else if (dom.field && this.fieldEditable) { + dom.field.focus(); + util.selectContentEditable(dom.field); + } + else if (this._hasChilds()) { + dom.expand.focus(); + } + else { + dom.menu.focus(); + } + break; + } + } +}; + +/** + * Select all text in an editable div after a delay of 0 ms + * @param {Element} editableDiv + */ +Node.select = function(editableDiv) { + setTimeout(function () { + util.selectContentEditable(editableDiv); + }, 0); +}; + +/** + * Update the values from the DOM field and value of this node + */ +Node.prototype.blur = function() { + // retrieve the actual field and value from the DOM. + this._getDomValue(false); + this._getDomField(false); +}; + +/** + * Duplicate given child node + * new structure will be added right before the cloned node + * @param {Node} node the childNode to be duplicated + * @return {Node} clone the clone of the node + * @private + */ +Node.prototype._duplicate = function(node) { + var clone = node.clone(); + + /* TODO: adjust the field name (to prevent equal field names) + if (this.type == 'object') { + } + */ + + this.insertAfter(clone, node); + + return clone; +}; + +/** + * Check if given node is a child. The method will check recursively to find + * this node. + * @param {Node} node + * @return {boolean} containsNode + */ +Node.prototype.containsNode = function(node) { + if (this == node) { + return true; + } + + var childs = this.childs; + if (childs) { + // TODO: use the js5 Array.some() here? + for (var i = 0, iMax = childs.length; i < iMax; i++) { + if (childs[i].containsNode(node)) { + return true; + } + } + } + + return false; +}; + +/** + * Move given node into this node + * @param {Node} node the childNode to be moved + * @param {Node} beforeNode node will be inserted before given + * node. If no beforeNode is given, + * the node is appended at the end + * @private + */ +Node.prototype._move = function(node, beforeNode) { + if (node == beforeNode) { + // nothing to do... + return; + } + + // check if this node is not a child of the node to be moved here + if (node.containsNode(this)) { + throw new Error('Cannot move a field into a child of itself'); + } + + // remove the original node + if (node.parent) { + node.parent.removeChild(node); + } + + // create a clone of the node + var clone = node.clone(); + node.clearDom(); + + // insert or append the node + if (beforeNode) { + this.insertBefore(clone, beforeNode); + } + else { + this.appendChild(clone); + } + + /* TODO: adjust the field name (to prevent equal field names) + if (this.type == 'object') { + } + */ +}; + +/** + * Remove a child from the node. + * Only applicable when Node value is of type array or object + * @param {Node} node The child node to be removed; + * @return {Node | undefined} node The removed node on success, + * else undefined + */ +Node.prototype.removeChild = function(node) { + if (this.childs) { + var index = this.childs.indexOf(node); + + if (index != -1) { + node.hide(); + + // delete old search results + delete node.searchField; + delete node.searchValue; + + var removedNode = this.childs.splice(index, 1)[0]; + + this.updateDom({'updateIndexes': true}); + + return removedNode; + } + } + + return undefined; +}; + +/** + * Remove a child node node from this node + * This method is equal to Node.removeChild, except that _remove firex an + * onChange event. + * @param {Node} node + * @private + */ +Node.prototype._remove = function (node) { + this.removeChild(node); +}; + +/** + * Change the type of the value of this Node + * @param {String} newType + */ +Node.prototype.changeType = function (newType) { + var oldType = this.type; + + if (oldType == newType) { + // type is not changed + return; + } + + if ((newType == 'string' || newType == 'auto') && + (oldType == 'string' || oldType == 'auto')) { + // this is an easy change + this.type = newType; + } + else { + // change from array to object, or from string/auto to object/array + var table = this.dom.tr ? this.dom.tr.parentNode : undefined; + var lastTr; + if (this.expanded) { + lastTr = this.getAppend(); + } + else { + lastTr = this.getDom(); + } + var nextTr = (lastTr && lastTr.parentNode) ? lastTr.nextSibling : undefined; + + // hide current field and all its childs + this.hide(); + this.clearDom(); + + // adjust the field and the value + this.type = newType; + + // adjust childs + if (newType == 'object') { + if (!this.childs) { + this.childs = []; + } + + this.childs.forEach(function (child, index) { + child.clearDom(); + delete child.index; + child.fieldEditable = true; + if (child.field == undefined) { + child.field = ''; + } + }); + + if (oldType == 'string' || oldType == 'auto') { + this.expanded = true; + } + } + else if (newType == 'array') { + if (!this.childs) { + this.childs = []; + } + + this.childs.forEach(function (child, index) { + child.clearDom(); + child.fieldEditable = false; + child.index = index; + }); + + if (oldType == 'string' || oldType == 'auto') { + this.expanded = true; + } + } + else { + this.expanded = false; + } + + // create new DOM + if (table) { + if (nextTr) { + table.insertBefore(this.getDom(), nextTr); + } + else { + table.appendChild(this.getDom()); + } + } + this.showChilds(); + } + + if (newType == 'auto' || newType == 'string') { + // cast value to the correct type + if (newType == 'string') { + this.value = String(this.value); + } + else { + this.value = this._stringCast(String(this.value)); + } + + this.focus(); + } + + this.updateDom({'updateIndexes': true}); +}; + +/** + * Retrieve value from DOM + * @param {boolean} [silent] If true (default), no errors will be thrown in + * case of invalid data + * @private + */ +Node.prototype._getDomValue = function(silent) { + if (this.dom.value && this.type != 'array' && this.type != 'object') { + this.valueInnerText = util.getInnerText(this.dom.value); + } + + if (this.valueInnerText != undefined) { + try { + // retrieve the value + var value; + if (this.type == 'string') { + value = this._unescapeHTML(this.valueInnerText); + } + else { + var str = this._unescapeHTML(this.valueInnerText); + value = this._stringCast(str); + } + if (value !== this.value) { + var oldValue = this.value; + this.value = value; + this.editor._onAction('editValue', { + 'node': this, + 'oldValue': oldValue, + 'newValue': value, + 'oldSelection': this.editor.selection, + 'newSelection': this.editor.getSelection() + }); + } + } + catch (err) { + this.value = undefined; + // TODO: sent an action with the new, invalid value? + if (silent !== true) { + throw err; + } + } + } +}; + +/** + * Update dom value: + * - the text color of the value, depending on the type of the value + * - the height of the field, depending on the width + * - background color in case it is empty + * @private + */ +Node.prototype._updateDomValue = function () { + var domValue = this.dom.value; + if (domValue) { + // set text color depending on value type + // TODO: put colors in css + var v = this.value; + var t = (this.type == 'auto') ? util.type(v) : this.type; + var isUrl = (t == 'string' && util.isUrl(v)); + var color = ''; + if (isUrl && !this.editable.value) { // TODO: when to apply this? + color = ''; + } + else if (t == 'string') { + color = 'green'; + } + else if (t == 'number') { + color = 'red'; + } + else if (t == 'boolean') { + color = 'darkorange'; + } + else if (this._hasChilds()) { + color = ''; + } + else if (v === null) { + color = '#004ED0'; // blue + } + else { + // invalid value + color = 'black'; + } + domValue.style.color = color; + + // make background color light-gray when empty + var isEmpty = (String(this.value) == '' && this.type != 'array' && this.type != 'object'); + if (isEmpty) { + util.addClassName(domValue, 'empty'); + } + else { + util.removeClassName(domValue, 'empty'); + } + + // underline url + if (isUrl) { + util.addClassName(domValue, 'url'); + } + else { + util.removeClassName(domValue, 'url'); + } + + // update title + if (t == 'array' || t == 'object') { + var count = this.childs ? this.childs.length : 0; + domValue.title = this.type + ' containing ' + count + ' items'; + } + else if (t == 'string' && util.isUrl(v)) { + if (this.editable.value) { + domValue.title = 'Ctrl+Click or Ctrl+Enter to open url in new window'; + } + } + else { + domValue.title = ''; + } + + // highlight when there is a search result + if (this.searchValueActive) { + util.addClassName(domValue, 'highlight-active'); + } + else { + util.removeClassName(domValue, 'highlight-active'); + } + if (this.searchValue) { + util.addClassName(domValue, 'highlight'); + } + else { + util.removeClassName(domValue, 'highlight'); + } + + // strip formatting from the contents of the editable div + util.stripFormatting(domValue); + } +}; + +/** + * Update dom field: + * - the text color of the field, depending on the text + * - the height of the field, depending on the width + * - background color in case it is empty + * @private + */ +Node.prototype._updateDomField = function () { + var domField = this.dom.field; + if (domField) { + // make backgound color lightgray when empty + var isEmpty = (String(this.field) == '' && this.parent.type != 'array'); + if (isEmpty) { + util.addClassName(domField, 'empty'); + } + else { + util.removeClassName(domField, 'empty'); + } + + // highlight when there is a search result + if (this.searchFieldActive) { + util.addClassName(domField, 'highlight-active'); + } + else { + util.removeClassName(domField, 'highlight-active'); + } + if (this.searchField) { + util.addClassName(domField, 'highlight'); + } + else { + util.removeClassName(domField, 'highlight'); + } + + // strip formatting from the contents of the editable div + util.stripFormatting(domField); + } +}; + +/** + * Retrieve field from DOM + * @param {boolean} [silent] If true (default), no errors will be thrown in + * case of invalid data + * @private + */ +Node.prototype._getDomField = function(silent) { + if (this.dom.field && this.fieldEditable) { + this.fieldInnerText = util.getInnerText(this.dom.field); + } + + if (this.fieldInnerText != undefined) { + try { + var field = this._unescapeHTML(this.fieldInnerText); + + if (field !== this.field) { + var oldField = this.field; + this.field = field; + this.editor._onAction('editField', { + 'node': this, + 'oldValue': oldField, + 'newValue': field, + 'oldSelection': this.editor.selection, + 'newSelection': this.editor.getSelection() + }); + } + } + catch (err) { + this.field = undefined; + // TODO: sent an action here, with the new, invalid value? + if (silent !== true) { + throw err; + } + } + } +}; + +/** + * Clear the dom of the node + */ +Node.prototype.clearDom = function() { + // TODO: hide the node first? + //this.hide(); + // TODO: recursively clear dom? + + this.dom = {}; +}; + +/** + * Get the HTML DOM TR element of the node. + * The dom will be generated when not yet created + * @return {Element} tr HTML DOM TR Element + */ +Node.prototype.getDom = function() { + var dom = this.dom; + if (dom.tr) { + return dom.tr; + } + + this._updateEditability(); + + // create row + dom.tr = document.createElement('tr'); + dom.tr.node = this; + + if (this.editor.options.mode === 'tree') { // note: we take here the global setting + var tdDrag = document.createElement('td'); + if (this.editable.field) { + // create draggable area + if (this.parent) { + var domDrag = document.createElement('button'); + dom.drag = domDrag; + domDrag.className = 'dragarea'; + domDrag.title = 'Drag to move this field (Alt+Shift+Arrows)'; + tdDrag.appendChild(domDrag); + } + } + dom.tr.appendChild(tdDrag); + + // create context menu + var tdMenu = document.createElement('td'); + var menu = document.createElement('button'); + dom.menu = menu; + menu.className = 'contextmenu'; + menu.title = 'Click to open the actions menu (Ctrl+M)'; + tdMenu.appendChild(dom.menu); + dom.tr.appendChild(tdMenu); + } + + // create tree and field + var tdField = document.createElement('td'); + dom.tr.appendChild(tdField); + dom.tree = this._createDomTree(); + tdField.appendChild(dom.tree); + + this.updateDom({'updateIndexes': true}); + + return dom.tr; +}; + +/** + * DragStart event, fired on mousedown on the dragarea at the left side of a Node + * @param {Event} event + * @private + */ +Node.prototype._onDragStart = function (event) { + var node = this; + if (!this.mousemove) { + this.mousemove = util.addEventListener(document, 'mousemove', + function (event) { + node._onDrag(event); + }); + } + + if (!this.mouseup) { + this.mouseup = util.addEventListener(document, 'mouseup', + function (event ) { + node._onDragEnd(event); + }); + } + + this.editor.highlighter.lock(); + this.drag = { + 'oldCursor': document.body.style.cursor, + 'startParent': this.parent, + 'startIndex': this.parent.childs.indexOf(this), + 'mouseX': event.pageX, + 'level': this.getLevel() + }; + document.body.style.cursor = 'move'; + + event.preventDefault(); +}; + +/** + * Drag event, fired when moving the mouse while dragging a Node + * @param {Event} event + * @private + */ +Node.prototype._onDrag = function (event) { + // TODO: this method has grown too large. Split it in a number of methods + var mouseY = event.pageY; + var mouseX = event.pageX; + + var trThis, trPrev, trNext, trFirst, trLast, trRoot; + var nodePrev, nodeNext; + var topThis, topPrev, topFirst, heightThis, bottomNext, heightNext; + var moved = false; + + // TODO: add an ESC option, which resets to the original position + + // move up/down + trThis = this.dom.tr; + topThis = util.getAbsoluteTop(trThis); + heightThis = trThis.offsetHeight; + if (mouseY < topThis) { + // move up + trPrev = trThis; + do { + trPrev = trPrev.previousSibling; + nodePrev = Node.getNodeFromTarget(trPrev); + topPrev = trPrev ? util.getAbsoluteTop(trPrev) : 0; + } + while (trPrev && mouseY < topPrev); + + if (nodePrev && !nodePrev.parent) { + nodePrev = undefined; + } + + if (!nodePrev) { + // move to the first node + trRoot = trThis.parentNode.firstChild; + trPrev = trRoot ? trRoot.nextSibling : undefined; + nodePrev = Node.getNodeFromTarget(trPrev); + if (nodePrev == this) { + nodePrev = undefined; + } + } + + if (nodePrev) { + // check if mouseY is really inside the found node + trPrev = nodePrev.dom.tr; + topPrev = trPrev ? util.getAbsoluteTop(trPrev) : 0; + if (mouseY > topPrev + heightThis) { + nodePrev = undefined; + } + } + + if (nodePrev) { + nodePrev.parent.moveBefore(this, nodePrev); + moved = true; + } + } + else { + // move down + trLast = (this.expanded && this.append) ? this.append.getDom() : this.dom.tr; + trFirst = trLast ? trLast.nextSibling : undefined; + if (trFirst) { + topFirst = util.getAbsoluteTop(trFirst); + trNext = trFirst; + do { + nodeNext = Node.getNodeFromTarget(trNext); + if (trNext) { + bottomNext = trNext.nextSibling ? + util.getAbsoluteTop(trNext.nextSibling) : 0; + heightNext = trNext ? (bottomNext - topFirst) : 0; + + if (nodeNext.parent.childs.length == 1 && nodeNext.parent.childs[0] == this) { + // We are about to remove the last child of this parent, + // which will make the parents appendNode visible. + topThis += 24 - 1; + // TODO: dangerous to suppose the height of the appendNode a constant of 24-1 px. + } + } + + trNext = trNext.nextSibling; + } + while (trNext && mouseY > topThis + heightNext); + + if (nodeNext && nodeNext.parent) { + // calculate the desired level + var diffX = (mouseX - this.drag.mouseX); + var diffLevel = Math.round(diffX / 24 / 2); + var level = this.drag.level + diffLevel; // desired level + var levelNext = nodeNext.getLevel(); // level to be + + // find the best fitting level (move upwards over the append nodes) + trPrev = nodeNext.dom.tr.previousSibling; + while (levelNext < level && trPrev) { + nodePrev = Node.getNodeFromTarget(trPrev); + if (nodePrev == this || nodePrev._isChildOf(this)) { + // neglect itself and its childs + } + else if (nodePrev instanceof AppendNode) { + var childs = nodePrev.parent.childs; + if (childs.length > 1 || + (childs.length == 1 && childs[0] != this)) { + // non-visible append node of a list of childs + // consisting of not only this node (else the + // append node will change into a visible "empty" + // text when removing this node). + nodeNext = Node.getNodeFromTarget(trPrev); + levelNext = nodeNext.getLevel(); + } + else { + break; + } + } + else { + break; + } + + trPrev = trPrev.previousSibling; + } + + // move the node when its position is changed + if (trLast.nextSibling != nodeNext.dom.tr) { + nodeNext.parent.moveBefore(this, nodeNext); + moved = true; + } + } + } + } + + if (moved) { + // update the dragging parameters when moved + this.drag.mouseX = mouseX; + this.drag.level = this.getLevel(); + } + + // auto scroll when hovering around the top of the editor + this.editor.startAutoScroll(mouseY); + + event.preventDefault(); +}; + +/** + * Drag event, fired on mouseup after having dragged a node + * @param {Event} event + * @private + */ +Node.prototype._onDragEnd = function (event) { + var params = { + 'node': this, + 'startParent': this.drag.startParent, + 'startIndex': this.drag.startIndex, + 'endParent': this.parent, + 'endIndex': this.parent.childs.indexOf(this) + }; + if ((params.startParent != params.endParent) || + (params.startIndex != params.endIndex)) { + // only register this action if the node is actually moved to another place + this.editor._onAction('moveNode', params); + } + + document.body.style.cursor = this.drag.oldCursor; + this.editor.highlighter.unlock(); + delete this.drag; + + if (this.mousemove) { + util.removeEventListener(document, 'mousemove', this.mousemove); + delete this.mousemove;} + if (this.mouseup) { + util.removeEventListener(document, 'mouseup', this.mouseup); + delete this.mouseup; + } + + // Stop any running auto scroll + this.editor.stopAutoScroll(); + + event.preventDefault(); +}; + +/** + * Test if this node is a child of an other node + * @param {Node} node + * @return {boolean} isChild + * @private + */ +Node.prototype._isChildOf = function (node) { + var n = this.parent; + while (n) { + if (n == node) { + return true; + } + n = n.parent; + } + + return false; +}; + +/** + * Create an editable field + * @return {Element} domField + * @private + */ +Node.prototype._createDomField = function () { + return document.createElement('div'); +}; + +/** + * Set highlighting for this node and all its childs. + * Only applied to the currently visible (expanded childs) + * @param {boolean} highlight + */ +Node.prototype.setHighlight = function (highlight) { + if (this.dom.tr) { + this.dom.tr.className = (highlight ? 'highlight' : ''); + + if (this.append) { + this.append.setHighlight(highlight); + } + + if (this.childs) { + this.childs.forEach(function (child) { + child.setHighlight(highlight); + }); + } + } +}; + +/** + * Update the value of the node. Only primitive types are allowed, no Object + * or Array is allowed. + * @param {String | Number | Boolean | null} value + */ +Node.prototype.updateValue = function (value) { + this.value = value; + this.updateDom(); +}; + +/** + * Update the field of the node. + * @param {String} field + */ +Node.prototype.updateField = function (field) { + this.field = field; + this.updateDom(); +}; + +/** + * Update the HTML DOM, optionally recursing through the childs + * @param {Object} [options] Available parameters: + * {boolean} [recurse] If true, the + * DOM of the childs will be updated recursively. + * False by default. + * {boolean} [updateIndexes] If true, the childs + * indexes of the node will be updated too. False by + * default. + */ +Node.prototype.updateDom = function (options) { + // update level indentation + var domTree = this.dom.tree; + if (domTree) { + domTree.style.marginLeft = this.getLevel() * 24 + 'px'; + } + + // update field + var domField = this.dom.field; + if (domField) { + if (this.fieldEditable) { + // parent is an object + domField.contentEditable = this.editable.field; + domField.spellcheck = false; + domField.className = 'field'; + } + else { + // parent is an array this is the root node + domField.className = 'readonly'; + } + + var field; + if (this.index != undefined) { + field = this.index; + } + else if (this.field != undefined) { + field = this.field; + } + else if (this._hasChilds()) { + field = this.type; + } + else { + field = ''; + } + domField.innerHTML = this._escapeHTML(field); + } + + // update value + var domValue = this.dom.value; + if (domValue) { + var count = this.childs ? this.childs.length : 0; + if (this.type == 'array') { + domValue.innerHTML = '[' + count + ']'; + } + else if (this.type == 'object') { + domValue.innerHTML = '{' + count + '}'; + } + else { + domValue.innerHTML = this._escapeHTML(this.value); + } + } + + // update field and value + this._updateDomField(); + this._updateDomValue(); + + // update childs indexes + if (options && options.updateIndexes === true) { + // updateIndexes is true or undefined + this._updateDomIndexes(); + } + + if (options && options.recurse === true) { + // recurse is true or undefined. update childs recursively + if (this.childs) { + this.childs.forEach(function (child) { + child.updateDom(options); + }); + } + } + + // update row with append button + if (this.append) { + this.append.updateDom(); + } +}; + +/** + * Update the DOM of the childs of a node: update indexes and undefined field + * names. + * Only applicable when structure is an array or object + * @private + */ +Node.prototype._updateDomIndexes = function () { + var domValue = this.dom.value; + var childs = this.childs; + if (domValue && childs) { + if (this.type == 'array') { + childs.forEach(function (child, index) { + child.index = index; + var childField = child.dom.field; + if (childField) { + childField.innerHTML = index; + } + }); + } + else if (this.type == 'object') { + childs.forEach(function (child) { + if (child.index != undefined) { + delete child.index; + + if (child.field == undefined) { + child.field = ''; + } + } + }); + } + } +}; + +/** + * Create an editable value + * @private + */ +Node.prototype._createDomValue = function () { + var domValue; + + if (this.type == 'array') { + domValue = document.createElement('div'); + domValue.className = 'readonly'; + domValue.innerHTML = '[...]'; + } + else if (this.type == 'object') { + domValue = document.createElement('div'); + domValue.className = 'readonly'; + domValue.innerHTML = '{...}'; + } + else { + if (!this.editable.value && util.isUrl(this.value)) { + // create a link in case of read-only editor and value containing an url + domValue = document.createElement('a'); + domValue.className = 'value'; + domValue.href = this.value; + domValue.target = '_blank'; + domValue.innerHTML = this._escapeHTML(this.value); + } + else { + // create an editable or read-only div + domValue = document.createElement('div'); + domValue.contentEditable = this.editable.value; + domValue.spellcheck = false; + domValue.className = 'value'; + domValue.innerHTML = this._escapeHTML(this.value); + } + } + + return domValue; +}; + +/** + * Create an expand/collapse button + * @return {Element} expand + * @private + */ +Node.prototype._createDomExpandButton = function () { + // create expand button + var expand = document.createElement('button'); + if (this._hasChilds()) { + expand.className = this.expanded ? 'expanded' : 'collapsed'; + expand.title = + 'Click to expand/collapse this field (Ctrl+E). \n' + + 'Ctrl+Click to expand/collapse including all childs.'; + } + else { + expand.className = 'invisible'; + expand.title = ''; + } + + return expand; +}; + + +/** + * Create a DOM tree element, containing the expand/collapse button + * @return {Element} domTree + * @private + */ +Node.prototype._createDomTree = function () { + var dom = this.dom; + var domTree = document.createElement('table'); + var tbody = document.createElement('tbody'); + domTree.style.borderCollapse = 'collapse'; // TODO: put in css + domTree.className = 'values'; + domTree.appendChild(tbody); + var tr = document.createElement('tr'); + tbody.appendChild(tr); + + // create expand button + var tdExpand = document.createElement('td'); + tdExpand.className = 'tree'; + tr.appendChild(tdExpand); + dom.expand = this._createDomExpandButton(); + tdExpand.appendChild(dom.expand); + dom.tdExpand = tdExpand; + + // create the field + var tdField = document.createElement('td'); + tdField.className = 'tree'; + tr.appendChild(tdField); + dom.field = this._createDomField(); + tdField.appendChild(dom.field); + dom.tdField = tdField; + + // create a separator + var tdSeparator = document.createElement('td'); + tdSeparator.className = 'tree'; + tr.appendChild(tdSeparator); + if (this.type != 'object' && this.type != 'array') { + tdSeparator.appendChild(document.createTextNode(':')); + tdSeparator.className = 'separator'; + } + dom.tdSeparator = tdSeparator; + + // create the value + var tdValue = document.createElement('td'); + tdValue.className = 'tree'; + tr.appendChild(tdValue); + dom.value = this._createDomValue(); + tdValue.appendChild(dom.value); + dom.tdValue = tdValue; + + return domTree; +}; + +/** + * Handle an event. The event is catched centrally by the editor + * @param {Event} event + */ +Node.prototype.onEvent = function (event) { + var type = event.type, + target = event.target || event.srcElement, + dom = this.dom, + node = this, + focusNode, + expandable = this._hasChilds(); + + // check if mouse is on menu or on dragarea. + // If so, highlight current row and its childs + if (target == dom.drag || target == dom.menu) { + if (type == 'mouseover') { + this.editor.highlighter.highlight(this); + } + else if (type == 'mouseout') { + this.editor.highlighter.unhighlight(); + } + } + + // drag events + if (type == 'mousedown' && target == dom.drag) { + this._onDragStart(event); + } + + // context menu events + if (type == 'click' && target == dom.menu) { + var highlighter = node.editor.highlighter; + highlighter.highlight(node); + highlighter.lock(); + util.addClassName(dom.menu, 'selected'); + this.showContextMenu(dom.menu, function () { + util.removeClassName(dom.menu, 'selected'); + highlighter.unlock(); + highlighter.unhighlight(); + }); + } + + // expand events + if (type == 'click' && target == dom.expand) { + if (expandable) { + var recurse = event.ctrlKey; // with ctrl-key, expand/collapse all + this._onExpand(recurse); + } + } + + // value events + var domValue = dom.value; + if (target == domValue) { + //noinspection FallthroughInSwitchStatementJS + switch (type) { + case 'focus': + focusNode = this; + break; + + case 'blur': + case 'change': + this._getDomValue(true); + this._updateDomValue(); + if (this.value) { + domValue.innerHTML = this._escapeHTML(this.value); + } + break; + + case 'input': + this._getDomValue(true); + this._updateDomValue(); + break; + + case 'keydown': + case 'mousedown': + this.editor.selection = this.editor.getSelection(); + break; + + case 'click': + if (event.ctrlKey || !this.editable.value) { + if (util.isUrl(this.value)) { + window.open(this.value, '_blank'); + } + } + break; + + case 'keyup': + this._getDomValue(true); + this._updateDomValue(); + break; + + case 'cut': + case 'paste': + setTimeout(function () { + node._getDomValue(true); + node._updateDomValue(); + }, 1); + break; + } + } + + // field events + var domField = dom.field; + if (target == domField) { + switch (type) { + case 'focus': + focusNode = this; + break; + + case 'blur': + case 'change': + this._getDomField(true); + this._updateDomField(); + if (this.field) { + domField.innerHTML = this._escapeHTML(this.field); + } + break; + + case 'input': + this._getDomField(true); + this._updateDomField(); + break; + + case 'keydown': + case 'mousedown': + this.editor.selection = this.editor.getSelection(); + break; + + case 'keyup': + this._getDomField(true); + this._updateDomField(); + break; + + case 'cut': + case 'paste': + setTimeout(function () { + node._getDomField(true); + node._updateDomField(); + }, 1); + break; + } + } + + // focus + // when clicked in whitespace left or right from the field or value, set focus + var domTree = dom.tree; + if (target == domTree.parentNode) { + switch (type) { + case 'click': + var left = (event.offsetX != undefined) ? + (event.offsetX < (this.getLevel() + 1) * 24) : + (event.pageX < util.getAbsoluteLeft(dom.tdSeparator));// for FF + if (left || expandable) { + // node is expandable when it is an object or array + if (domField) { + util.setEndOfContentEditable(domField); + domField.focus(); + } + } + else { + if (domValue) { + util.setEndOfContentEditable(domValue); + domValue.focus(); + } + } + break; + } + } + if ((target == dom.tdExpand && !expandable) || target == dom.tdField || + target == dom.tdSeparator) { + switch (type) { + case 'click': + if (domField) { + util.setEndOfContentEditable(domField); + domField.focus(); + } + break; + } + } + + if (type == 'keydown') { + this.onKeyDown(event); + } +}; + +/** + * Key down event handler + * @param {Event} event + */ +Node.prototype.onKeyDown = function (event) { + var keynum = event.which || event.keyCode; + var target = event.target || event.srcElement; + var ctrlKey = event.ctrlKey; + var shiftKey = event.shiftKey; + var altKey = event.altKey; + var handled = false; + var prevNode, nextNode, nextDom, nextDom2; + var editable = this.editor.options.mode === 'tree'; + + // util.log(ctrlKey, keynum, event.charCode); // TODO: cleanup + if (keynum == 13) { // Enter + if (target == this.dom.value) { + if (!this.editable.value || event.ctrlKey) { + if (util.isUrl(this.value)) { + window.open(this.value, '_blank'); + handled = true; + } + } + } + else if (target == this.dom.expand) { + var expandable = this._hasChilds(); + if (expandable) { + var recurse = event.ctrlKey; // with ctrl-key, expand/collapse all + this._onExpand(recurse); + target.focus(); + handled = true; + } + } + } + else if (keynum == 68) { // D + if (ctrlKey && editable) { // Ctrl+D + this._onDuplicate(); + handled = true; + } + } + else if (keynum == 69) { // E + if (ctrlKey) { // Ctrl+E and Ctrl+Shift+E + this._onExpand(shiftKey); // recurse = shiftKey + target.focus(); // TODO: should restore focus in case of recursing expand (which takes DOM offline) + handled = true; + } + } + else if (keynum == 77 && editable) { // M + if (ctrlKey) { // Ctrl+M + this.showContextMenu(target); + handled = true; + } + } + else if (keynum == 46 && editable) { // Del + if (ctrlKey) { // Ctrl+Del + this._onRemove(); + handled = true; + } + } + else if (keynum == 45 && editable) { // Ins + if (ctrlKey && !shiftKey) { // Ctrl+Ins + this._onInsertBefore(); + handled = true; + } + else if (ctrlKey && shiftKey) { // Ctrl+Shift+Ins + this._onInsertAfter(); + handled = true; + } + } + else if (keynum == 35) { // End + if (altKey) { // Alt+End + // find the last node + var lastNode = this._lastNode(); + if (lastNode) { + lastNode.focus(Node.focusElement || this._getElementName(target)); + } + handled = true; + } + } + else if (keynum == 36) { // Home + if (altKey) { // Alt+Home + // find the first node + var firstNode = this._firstNode(); + if (firstNode) { + firstNode.focus(Node.focusElement || this._getElementName(target)); + } + handled = true; + } + } + else if (keynum == 37) { // Arrow Left + if (altKey && !shiftKey) { // Alt + Arrow Left + // move to left element + var prevElement = this._previousElement(target); + if (prevElement) { + this.focus(this._getElementName(prevElement)); + } + handled = true; + } + else if (altKey && shiftKey && editable) { // Alt + Shift Arrow left + if (this.expanded) { + var appendDom = this.getAppend(); + nextDom = appendDom ? appendDom.nextSibling : undefined; + } + else { + var dom = this.getDom(); + nextDom = dom.nextSibling; + } + if (nextDom) { + nextNode = Node.getNodeFromTarget(nextDom); + nextDom2 = nextDom.nextSibling; + nextNode2 = Node.getNodeFromTarget(nextDom2); + if (nextNode && nextNode instanceof AppendNode && + !(this.parent.childs.length == 1) && + nextNode2 && nextNode2.parent) { + nextNode2.parent.moveBefore(this, nextNode2); + this.focus(Node.focusElement || this._getElementName(target)); + } + } + } + } + else if (keynum == 38) { // Arrow Up + if (altKey && !shiftKey) { // Alt + Arrow Up + // find the previous node + prevNode = this._previousNode(); + if (prevNode) { + prevNode.focus(Node.focusElement || this._getElementName(target)); + } + handled = true; + } + else if (altKey && shiftKey) { // Alt + Shift + Arrow Up + // find the previous node + prevNode = this._previousNode(); + if (prevNode && prevNode.parent) { + prevNode.parent.moveBefore(this, prevNode); + this.focus(Node.focusElement || this._getElementName(target)); + } + handled = true; + } + } + else if (keynum == 39) { // Arrow Right + if (altKey && !shiftKey) { // Alt + Arrow Right + // move to right element + var nextElement = this._nextElement(target); + if (nextElement) { + this.focus(this._getElementName(nextElement)); + } + handled = true; + } + else if (altKey && shiftKey) { // Alt + Shift Arrow Right + dom = this.getDom(); + var prevDom = dom.previousSibling; + if (prevDom) { + prevNode = Node.getNodeFromTarget(prevDom); + if (prevNode && prevNode.parent && + (prevNode instanceof AppendNode) + && !prevNode.isVisible()) { + prevNode.parent.moveBefore(this, prevNode); + this.focus(Node.focusElement || this._getElementName(target)); + } + } + } + } + else if (keynum == 40) { // Arrow Down + if (altKey && !shiftKey) { // Alt + Arrow Down + // find the next node + nextNode = this._nextNode(); + if (nextNode) { + nextNode.focus(Node.focusElement || this._getElementName(target)); + } + handled = true; + } + else if (altKey && shiftKey && editable) { // Alt + Shift + Arrow Down + // find the 2nd next node and move before that one + if (this.expanded) { + nextNode = this.append ? this.append._nextNode() : undefined; + } + else { + nextNode = this._nextNode(); + } + nextDom = nextNode ? nextNode.getDom() : undefined; + if (this.parent.childs.length == 1) { + nextDom2 = nextDom; + } + else { + nextDom2 = nextDom ? nextDom.nextSibling : undefined; + } + var nextNode2 = Node.getNodeFromTarget(nextDom2); + if (nextNode2 && nextNode2.parent) { + nextNode2.parent.moveBefore(this, nextNode2); + this.focus(Node.focusElement || this._getElementName(target)); + } + handled = true; + } + } + + if (handled) { + event.preventDefault(); + event.stopPropagation(); + } +}; + +/** + * Handle the expand event, when clicked on the expand button + * @param {boolean} recurse If true, child nodes will be expanded too + * @private + */ +Node.prototype._onExpand = function (recurse) { + if (recurse) { + // Take the table offline + var table = this.dom.tr.parentNode; // TODO: not nice to access the main table like this + var frame = table.parentNode; + var scrollTop = frame.scrollTop; + frame.removeChild(table); + } + + if (this.expanded) { + this.collapse(recurse); + } + else { + this.expand(recurse); + } + + if (recurse) { + // Put the table online again + frame.appendChild(table); + frame.scrollTop = scrollTop; + } +}; + +/** + * Remove this node + * @private + */ +Node.prototype._onRemove = function() { + this.editor.highlighter.unhighlight(); + var childs = this.parent.childs; + var index = childs.indexOf(this); + + // adjust the focus + var oldSelection = this.editor.getSelection(); + if (childs[index + 1]) { + childs[index + 1].focus(); + } + else if (childs[index - 1]) { + childs[index - 1].focus(); + } + else { + this.parent.focus(); + } + var newSelection = this.editor.getSelection(); + + // remove the node + this.parent._remove(this); + + // store history action + this.editor._onAction('removeNode', { + node: this, + parent: this.parent, + index: index, + oldSelection: oldSelection, + newSelection: newSelection + }); +}; + +/** + * Duplicate this node + * @private + */ +Node.prototype._onDuplicate = function() { + var oldSelection = this.editor.getSelection(); + var clone = this.parent._duplicate(this); + clone.focus(); + var newSelection = this.editor.getSelection(); + + this.editor._onAction('duplicateNode', { + node: this, + clone: clone, + parent: this.parent, + oldSelection: oldSelection, + newSelection: newSelection + }); +}; + +/** + * Handle insert before event + * @param {String} [field] + * @param {*} [value] + * @param {String} [type] Can be 'auto', 'array', 'object', or 'string' + * @private + */ +Node.prototype._onInsertBefore = function (field, value, type) { + var oldSelection = this.editor.getSelection(); + + var newNode = new Node(this.editor, { + field: (field != undefined) ? field : '', + value: (value != undefined) ? value : '', + type: type + }); + newNode.expand(true); + this.parent.insertBefore(newNode, this); + this.editor.highlighter.unhighlight(); + newNode.focus('field'); + var newSelection = this.editor.getSelection(); + + this.editor._onAction('insertBeforeNode', { + node: newNode, + beforeNode: this, + parent: this.parent, + oldSelection: oldSelection, + newSelection: newSelection + }); +}; + +/** + * Handle insert after event + * @param {String} [field] + * @param {*} [value] + * @param {String} [type] Can be 'auto', 'array', 'object', or 'string' + * @private + */ +Node.prototype._onInsertAfter = function (field, value, type) { + var oldSelection = this.editor.getSelection(); + + var newNode = new Node(this.editor, { + field: (field != undefined) ? field : '', + value: (value != undefined) ? value : '', + type: type + }); + newNode.expand(true); + this.parent.insertAfter(newNode, this); + this.editor.highlighter.unhighlight(); + newNode.focus('field'); + var newSelection = this.editor.getSelection(); + + this.editor._onAction('insertAfterNode', { + node: newNode, + afterNode: this, + parent: this.parent, + oldSelection: oldSelection, + newSelection: newSelection + }); +}; + +/** + * Handle append event + * @param {String} [field] + * @param {*} [value] + * @param {String} [type] Can be 'auto', 'array', 'object', or 'string' + * @private + */ +Node.prototype._onAppend = function (field, value, type) { + var oldSelection = this.editor.getSelection(); + + var newNode = new Node(this.editor, { + field: (field != undefined) ? field : '', + value: (value != undefined) ? value : '', + type: type + }); + newNode.expand(true); + this.parent.appendChild(newNode); + this.editor.highlighter.unhighlight(); + newNode.focus('field'); + var newSelection = this.editor.getSelection(); + + this.editor._onAction('appendNode', { + node: newNode, + parent: this.parent, + oldSelection: oldSelection, + newSelection: newSelection + }); +}; + +/** + * Change the type of the node's value + * @param {String} newType + * @private + */ +Node.prototype._onChangeType = function (newType) { + var oldType = this.type; + if (newType != oldType) { + var oldSelection = this.editor.getSelection(); + this.changeType(newType); + var newSelection = this.editor.getSelection(); + + this.editor._onAction('changeType', { + node: this, + oldType: oldType, + newType: newType, + oldSelection: oldSelection, + newSelection: newSelection + }); + } +}; + +/** + * Sort the childs of the node. Only applicable when the node has type 'object' + * or 'array'. + * @param {String} direction Sorting direction. Available values: "asc", "desc" + * @private + */ +Node.prototype._onSort = function (direction) { + if (this._hasChilds()) { + var order = (direction == 'desc') ? -1 : 1; + var prop = (this.type == 'array') ? 'value': 'field'; + this.hideChilds(); + + var oldChilds = this.childs; + var oldSort = this.sort; + + // copy the array (the old one will be kept for an undo action + this.childs = this.childs.concat(); + + // sort the arrays + this.childs.sort(function (a, b) { + if (a[prop] > b[prop]) return order; + if (a[prop] < b[prop]) return -order; + return 0; + }); + this.sort = (order == 1) ? 'asc' : 'desc'; + + this.editor._onAction('sort', { + node: this, + oldChilds: oldChilds, + oldSort: oldSort, + newChilds: this.childs, + newSort: this.sort + }); + + this.showChilds(); + } +}; + +/** + * Create a table row with an append button. + * @return {HTMLElement | undefined} buttonAppend or undefined when inapplicable + */ +Node.prototype.getAppend = function () { + if (!this.append) { + this.append = new AppendNode(this.editor); + this.append.setParent(this); + } + return this.append.getDom(); +}; + +/** + * Find the node from an event target + * @param {Node} target + * @return {Node | undefined} node or undefined when not found + * @static + */ +Node.getNodeFromTarget = function (target) { + while (target) { + if (target.node) { + return target.node; + } + target = target.parentNode; + } + + return undefined; +}; + +/** + * Get the previously rendered node + * @return {Node | null} previousNode + * @private + */ +Node.prototype._previousNode = function () { + var prevNode = null; + var dom = this.getDom(); + if (dom && dom.parentNode) { + // find the previous field + var prevDom = dom; + do { + prevDom = prevDom.previousSibling; + prevNode = Node.getNodeFromTarget(prevDom); + } + while (prevDom && (prevNode instanceof AppendNode && !prevNode.isVisible())); + } + return prevNode; +}; + +/** + * Get the next rendered node + * @return {Node | null} nextNode + * @private + */ +Node.prototype._nextNode = function () { + var nextNode = null; + var dom = this.getDom(); + if (dom && dom.parentNode) { + // find the previous field + var nextDom = dom; + do { + nextDom = nextDom.nextSibling; + nextNode = Node.getNodeFromTarget(nextDom); + } + while (nextDom && (nextNode instanceof AppendNode && !nextNode.isVisible())); + } + + return nextNode; +}; + +/** + * Get the first rendered node + * @return {Node | null} firstNode + * @private + */ +Node.prototype._firstNode = function () { + var firstNode = null; + var dom = this.getDom(); + if (dom && dom.parentNode) { + var firstDom = dom.parentNode.firstChild; + firstNode = Node.getNodeFromTarget(firstDom); + } + + return firstNode; +}; + +/** + * Get the last rendered node + * @return {Node | null} lastNode + * @private + */ +Node.prototype._lastNode = function () { + var lastNode = null; + var dom = this.getDom(); + if (dom && dom.parentNode) { + var lastDom = dom.parentNode.lastChild; + lastNode = Node.getNodeFromTarget(lastDom); + while (lastDom && (lastNode instanceof AppendNode && !lastNode.isVisible())) { + lastDom = lastDom.previousSibling; + lastNode = Node.getNodeFromTarget(lastDom); + } + } + return lastNode; +}; + +/** + * Get the next element which can have focus. + * @param {Element} elem + * @return {Element | null} nextElem + * @private + */ +Node.prototype._previousElement = function (elem) { + var dom = this.dom; + // noinspection FallthroughInSwitchStatementJS + switch (elem) { + case dom.value: + if (this.fieldEditable) { + return dom.field; + } + // intentional fall through + case dom.field: + if (this._hasChilds()) { + return dom.expand; + } + // intentional fall through + case dom.expand: + return dom.menu; + case dom.menu: + if (dom.drag) { + return dom.drag; + } + // intentional fall through + default: + return null; + } +}; + +/** + * Get the next element which can have focus. + * @param {Element} elem + * @return {Element | null} nextElem + * @private + */ +Node.prototype._nextElement = function (elem) { + var dom = this.dom; + // noinspection FallthroughInSwitchStatementJS + switch (elem) { + case dom.drag: + return dom.menu; + case dom.menu: + if (this._hasChilds()) { + return dom.expand; + } + // intentional fall through + case dom.expand: + if (this.fieldEditable) { + return dom.field; + } + // intentional fall through + case dom.field: + if (!this._hasChilds()) { + return dom.value; + } + default: + return null; + } +}; + +/** + * Get the dom name of given element. returns null if not found. + * For example when element == dom.field, "field" is returned. + * @param {Element} element + * @return {String | null} elementName Available elements with name: 'drag', + * 'menu', 'expand', 'field', 'value' + * @private + */ +Node.prototype._getElementName = function (element) { + var dom = this.dom; + for (var name in dom) { + if (dom.hasOwnProperty(name)) { + if (dom[name] == element) { + return name; + } + } + } + return null; +}; + +/** + * Test if this node has childs. This is the case when the node is an object + * or array. + * @return {boolean} hasChilds + * @private + */ +Node.prototype._hasChilds = function () { + return this.type == 'array' || this.type == 'object'; +}; + +// titles with explanation for the different types +Node.TYPE_TITLES = { + 'auto': 'Field type "auto". ' + + 'The field type is automatically determined from the value ' + + 'and can be a string, number, boolean, or null.', + 'object': 'Field type "object". ' + + 'An object contains an unordered set of key/value pairs.', + 'array': 'Field type "array". ' + + 'An array contains an ordered collection of values.', + 'string': 'Field type "string". ' + + 'Field type is not determined from the value, ' + + 'but always returned as string.' +}; + +/** + * Show a contextmenu for this node + * @param {HTMLElement} anchor Anchor element to attache the context menu to. + * @param {function} [onClose] Callback method called when the context menu + * is being closed. + */ +Node.prototype.showContextMenu = function (anchor, onClose) { + var node = this; + var titles = Node.TYPE_TITLES; + var items = []; + + if (this.editable.value) { + items.push({ + text: 'Type', + title: 'Change the type of this field', + className: 'type-' + this.type, + submenu: [ + { + text: 'Auto', + className: 'type-auto' + + (this.type == 'auto' ? ' selected' : ''), + title: titles.auto, + click: function () { + node._onChangeType('auto'); + } + }, + { + text: 'Array', + className: 'type-array' + + (this.type == 'array' ? ' selected' : ''), + title: titles.array, + click: function () { + node._onChangeType('array'); + } + }, + { + text: 'Object', + className: 'type-object' + + (this.type == 'object' ? ' selected' : ''), + title: titles.object, + click: function () { + node._onChangeType('object'); + } + }, + { + text: 'String', + className: 'type-string' + + (this.type == 'string' ? ' selected' : ''), + title: titles.string, + click: function () { + node._onChangeType('string'); + } + } + ] + }); + } + + if (this._hasChilds()) { + var direction = ((this.sort == 'asc') ? 'desc': 'asc'); + items.push({ + text: 'Sort', + title: 'Sort the childs of this ' + this.type, + className: 'sort-' + direction, + click: function () { + node._onSort(direction); + }, + submenu: [ + { + text: 'Ascending', + className: 'sort-asc', + title: 'Sort the childs of this ' + this.type + ' in ascending order', + click: function () { + node._onSort('asc'); + } + }, + { + text: 'Descending', + className: 'sort-desc', + title: 'Sort the childs of this ' + this.type +' in descending order', + click: function () { + node._onSort('desc'); + } + } + ] + }); + } + + if (this.parent && this.parent._hasChilds()) { + if (items.length) { + // create a separator + items.push({ + 'type': 'separator' + }); + } + + // create append button (for last child node only) + var childs = node.parent.childs; + if (node == childs[childs.length - 1]) { + items.push({ + text: 'Append', + title: 'Append a new field with type \'auto\' after this field (Ctrl+Shift+Ins)', + submenuTitle: 'Select the type of the field to be appended', + className: 'append', + click: function () { + node._onAppend('', '', 'auto'); + }, + submenu: [ + { + text: 'Auto', + className: 'type-auto', + title: titles.auto, + click: function () { + node._onAppend('', '', 'auto'); + } + }, + { + text: 'Array', + className: 'type-array', + title: titles.array, + click: function () { + node._onAppend('', []); + } + }, + { + text: 'Object', + className: 'type-object', + title: titles.object, + click: function () { + node._onAppend('', {}); + } + }, + { + text: 'String', + className: 'type-string', + title: titles.string, + click: function () { + node._onAppend('', '', 'string'); + } + } + ] + }); + } + + // create insert button + items.push({ + text: 'Insert', + title: 'Insert a new field with type \'auto\' before this field (Ctrl+Ins)', + submenuTitle: 'Select the type of the field to be inserted', + className: 'insert', + click: function () { + node._onInsertBefore('', '', 'auto'); + }, + submenu: [ + { + text: 'Auto', + className: 'type-auto', + title: titles.auto, + click: function () { + node._onInsertBefore('', '', 'auto'); + } + }, + { + text: 'Array', + className: 'type-array', + title: titles.array, + click: function () { + node._onInsertBefore('', []); + } + }, + { + text: 'Object', + className: 'type-object', + title: titles.object, + click: function () { + node._onInsertBefore('', {}); + } + }, + { + text: 'String', + className: 'type-string', + title: titles.string, + click: function () { + node._onInsertBefore('', '', 'string'); + } + } + ] + }); + + if (this.editable.field) { + // create duplicate button + items.push({ + text: 'Duplicate', + title: 'Duplicate this field (Ctrl+D)', + className: 'duplicate', + click: function () { + node._onDuplicate(); + } + }); + + // create remove button + items.push({ + text: 'Remove', + title: 'Remove this field (Ctrl+Del)', + className: 'remove', + click: function () { + node._onRemove(); + } + }); + } + } + + var menu = new ContextMenu(items, {close: onClose}); + menu.show(anchor); +}; + +/** + * get the type of a value + * @param {*} value + * @return {String} type Can be 'object', 'array', 'string', 'auto' + * @private + */ +Node.prototype._getType = function(value) { + if (value instanceof Array) { + return 'array'; + } + if (value instanceof Object) { + return 'object'; + } + if (typeof(value) == 'string' && typeof(this._stringCast(value)) != 'string') { + return 'string'; + } + + return 'auto'; +}; + +/** + * cast contents of a string to the correct type. This can be a string, + * a number, a boolean, etc + * @param {String} str + * @return {*} castedStr + * @private + */ +Node.prototype._stringCast = function(str) { + var lower = str.toLowerCase(), + num = Number(str), // will nicely fail with '123ab' + numFloat = parseFloat(str); // will nicely fail with ' ' + + if (str == '') { + return ''; + } + else if (lower == 'null') { + return null; + } + else if (lower == 'true') { + return true; + } + else if (lower == 'false') { + return false; + } + else if (!isNaN(num) && !isNaN(numFloat)) { + return num; + } + else { + return str; + } +}; + +/** + * escape a text, such that it can be displayed safely in an HTML element + * @param {String} text + * @return {String} escapedText + * @private + */ +Node.prototype._escapeHTML = function (text) { + var htmlEscaped = String(text) + .replace(//g, '>') + .replace(/ /g, '  ') // replace double space with an nbsp and space + .replace(/^ /, ' ') // space at start + .replace(/ $/, ' '); // space at end + + var json = JSON.stringify(htmlEscaped); + return json.substring(1, json.length - 1); +}; + +/** + * unescape a string. + * @param {String} escapedText + * @return {String} text + * @private + */ +Node.prototype._unescapeHTML = function (escapedText) { + var json = '"' + this._escapeJSON(escapedText) + '"'; + var htmlEscaped = util.parse(json); + return htmlEscaped + .replace(/</g, '<') + .replace(/>/g, '>') + .replace(/ |\u00A0/g, ' '); +}; + +/** + * escape a text to make it a valid JSON string. The method will: + * - replace unescaped double quotes with '\"' + * - replace unescaped backslash with '\\' + * - replace returns with '\n' + * @param {String} text + * @return {String} escapedText + * @private + */ +Node.prototype._escapeJSON = function (text) { + // TODO: replace with some smart regex (only when a new solution is faster!) + var escaped = ''; + var i = 0, iMax = text.length; + while (i < iMax) { + var c = text.charAt(i); + if (c == '\n') { + escaped += '\\n'; + } + else if (c == '\\') { + escaped += c; + i++; + + c = text.charAt(i); + if ('"\\/bfnrtu'.indexOf(c) == -1) { + escaped += '\\'; // no valid escape character + } + escaped += c; + } + else if (c == '"') { + escaped += '\\"'; + } + else { + escaped += c; + } + i++; + } + + return escaped; +}; + +// TODO: find a nicer solution to resolve this circular dependency between Node and AppendNode +var AppendNode = appendNodeFactory(Node); + +module.exports = Node; diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/SearchBox.js b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/SearchBox.js new file mode 100644 index 0000000..e9c2b23 --- /dev/null +++ b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/SearchBox.js @@ -0,0 +1,288 @@ +/** + * @constructor SearchBox + * Create a search box in given HTML container + * @param {JSONEditor} editor The JSON Editor to attach to + * @param {Element} container HTML container element of where to + * create the search box + */ +function SearchBox (editor, container) { + var searchBox = this; + + this.editor = editor; + this.timeout = undefined; + this.delay = 200; // ms + this.lastText = undefined; + + this.dom = {}; + this.dom.container = container; + + var table = document.createElement('table'); + this.dom.table = table; + table.className = 'search'; + container.appendChild(table); + var tbody = document.createElement('tbody'); + this.dom.tbody = tbody; + table.appendChild(tbody); + var tr = document.createElement('tr'); + tbody.appendChild(tr); + + var td = document.createElement('td'); + tr.appendChild(td); + var results = document.createElement('div'); + this.dom.results = results; + results.className = 'results'; + td.appendChild(results); + + td = document.createElement('td'); + tr.appendChild(td); + var divInput = document.createElement('div'); + this.dom.input = divInput; + divInput.className = 'frame'; + divInput.title = 'Search fields and values'; + td.appendChild(divInput); + + // table to contain the text input and search button + var tableInput = document.createElement('table'); + divInput.appendChild(tableInput); + var tbodySearch = document.createElement('tbody'); + tableInput.appendChild(tbodySearch); + tr = document.createElement('tr'); + tbodySearch.appendChild(tr); + + var refreshSearch = document.createElement('button'); + refreshSearch.className = 'refresh'; + td = document.createElement('td'); + td.appendChild(refreshSearch); + tr.appendChild(td); + + var search = document.createElement('input'); + this.dom.search = search; + search.oninput = function (event) { + searchBox._onDelayedSearch(event); + }; + search.onchange = function (event) { // For IE 9 + searchBox._onSearch(event); + }; + search.onkeydown = function (event) { + searchBox._onKeyDown(event); + }; + search.onkeyup = function (event) { + searchBox._onKeyUp(event); + }; + refreshSearch.onclick = function (event) { + search.select(); + }; + + // TODO: ESC in FF restores the last input, is a FF bug, https://bugzilla.mozilla.org/show_bug.cgi?id=598819 + td = document.createElement('td'); + td.appendChild(search); + tr.appendChild(td); + + var searchNext = document.createElement('button'); + searchNext.title = 'Next result (Enter)'; + searchNext.className = 'next'; + searchNext.onclick = function () { + searchBox.next(); + }; + td = document.createElement('td'); + td.appendChild(searchNext); + tr.appendChild(td); + + var searchPrevious = document.createElement('button'); + searchPrevious.title = 'Previous result (Shift+Enter)'; + searchPrevious.className = 'previous'; + searchPrevious.onclick = function () { + searchBox.previous(); + }; + td = document.createElement('td'); + td.appendChild(searchPrevious); + tr.appendChild(td); +} + +/** + * Go to the next search result + * @param {boolean} [focus] If true, focus will be set to the next result + * focus is false by default. + */ +SearchBox.prototype.next = function(focus) { + if (this.results != undefined) { + var index = (this.resultIndex != undefined) ? this.resultIndex + 1 : 0; + if (index > this.results.length - 1) { + index = 0; + } + this._setActiveResult(index, focus); + } +}; + +/** + * Go to the prevous search result + * @param {boolean} [focus] If true, focus will be set to the next result + * focus is false by default. + */ +SearchBox.prototype.previous = function(focus) { + if (this.results != undefined) { + var max = this.results.length - 1; + var index = (this.resultIndex != undefined) ? this.resultIndex - 1 : max; + if (index < 0) { + index = max; + } + this._setActiveResult(index, focus); + } +}; + +/** + * Set new value for the current active result + * @param {Number} index + * @param {boolean} [focus] If true, focus will be set to the next result. + * focus is false by default. + * @private + */ +SearchBox.prototype._setActiveResult = function(index, focus) { + // de-activate current active result + if (this.activeResult) { + var prevNode = this.activeResult.node; + var prevElem = this.activeResult.elem; + if (prevElem == 'field') { + delete prevNode.searchFieldActive; + } + else { + delete prevNode.searchValueActive; + } + prevNode.updateDom(); + } + + if (!this.results || !this.results[index]) { + // out of range, set to undefined + this.resultIndex = undefined; + this.activeResult = undefined; + return; + } + + this.resultIndex = index; + + // set new node active + var node = this.results[this.resultIndex].node; + var elem = this.results[this.resultIndex].elem; + if (elem == 'field') { + node.searchFieldActive = true; + } + else { + node.searchValueActive = true; + } + this.activeResult = this.results[this.resultIndex]; + node.updateDom(); + + // TODO: not so nice that the focus is only set after the animation is finished + node.scrollTo(function () { + if (focus) { + node.focus(elem); + } + }); +}; + +/** + * Cancel any running onDelayedSearch. + * @private + */ +SearchBox.prototype._clearDelay = function() { + if (this.timeout != undefined) { + clearTimeout(this.timeout); + delete this.timeout; + } +}; + +/** + * Start a timer to execute a search after a short delay. + * Used for reducing the number of searches while typing. + * @param {Event} event + * @private + */ +SearchBox.prototype._onDelayedSearch = function (event) { + // execute the search after a short delay (reduces the number of + // search actions while typing in the search text box) + this._clearDelay(); + var searchBox = this; + this.timeout = setTimeout(function (event) { + searchBox._onSearch(event); + }, + this.delay); +}; + +/** + * Handle onSearch event + * @param {Event} event + * @param {boolean} [forceSearch] If true, search will be executed again even + * when the search text is not changed. + * Default is false. + * @private + */ +SearchBox.prototype._onSearch = function (event, forceSearch) { + this._clearDelay(); + + var value = this.dom.search.value; + var text = (value.length > 0) ? value : undefined; + if (text != this.lastText || forceSearch) { + // only search again when changed + this.lastText = text; + this.results = this.editor.search(text); + this._setActiveResult(undefined); + + // display search results + if (text != undefined) { + var resultCount = this.results.length; + switch (resultCount) { + case 0: this.dom.results.innerHTML = 'no results'; break; + case 1: this.dom.results.innerHTML = '1 result'; break; + default: this.dom.results.innerHTML = resultCount + ' results'; break; + } + } + else { + this.dom.results.innerHTML = ''; + } + } +}; + +/** + * Handle onKeyDown event in the input box + * @param {Event} event + * @private + */ +SearchBox.prototype._onKeyDown = function (event) { + var keynum = event.which; + if (keynum == 27) { // ESC + this.dom.search.value = ''; // clear search + this._onSearch(event); + event.preventDefault(); + event.stopPropagation(); + } + else if (keynum == 13) { // Enter + if (event.ctrlKey) { + // force to search again + this._onSearch(event, true); + } + else if (event.shiftKey) { + // move to the previous search result + this.previous(); + } + else { + // move to the next search result + this.next(); + } + event.preventDefault(); + event.stopPropagation(); + } +}; + +/** + * Handle onKeyUp event in the input box + * @param {Event} event + * @private + */ +SearchBox.prototype._onKeyUp = function (event) { + var keynum = event.keyCode; + if (keynum != 27 && keynum != 13) { // !show and !Enter + this._onDelayedSearch(event); // For IE 9 + } +}; + +module.exports = SearchBox; diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/ace/index.js b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/ace/index.js new file mode 100644 index 0000000..846ae0a --- /dev/null +++ b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/ace/index.js @@ -0,0 +1,9 @@ +// load brace +var ace = require('brace'); + +// load required ace modules +require('brace/mode/json'); +require('brace/ext/searchbox'); +require('./theme-jsoneditor'); + +module.exports = ace; diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/asset/ace/theme-jsoneditor.js b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/ace/theme-jsoneditor.js similarity index 96% rename from data-mgmt/src/main/webapp/bower_components/jsoneditor/asset/ace/theme-jsoneditor.js rename to data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/ace/theme-jsoneditor.js index 3e658b8..8d77945 100644 --- a/data-mgmt/src/main/webapp/bower_components/jsoneditor/asset/ace/theme-jsoneditor.js +++ b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/ace/theme-jsoneditor.js @@ -28,7 +28,7 @@ * * ***** END LICENSE BLOCK ***** */ -define('ace/theme/jsoneditor', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { +ace.define('ace/theme/jsoneditor', ['require', 'exports', 'module', 'ace/lib/dom'], function(acequire, exports, module) { exports.isDark = false; exports.cssClass = "ace-jsoneditor"; @@ -139,6 +139,6 @@ text-decoration: underline\ background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y\ }"; -var dom = require("../lib/dom"); +var dom = acequire("../lib/dom"); dom.importCssString(exports.cssText, exports.cssClass); }); diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/appendNodeFactory.js b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/appendNodeFactory.js new file mode 100644 index 0000000..9469bb6 --- /dev/null +++ b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/appendNodeFactory.js @@ -0,0 +1,226 @@ +var util = require('./util'); +var ContextMenu = require('./ContextMenu'); + +/** + * A factory function to create an AppendNode, which depends on a Node + * @param {Node} Node + */ +function appendNodeFactory(Node) { + /** + * @constructor AppendNode + * @extends Node + * @param {TreeEditor} editor + * Create a new AppendNode. This is a special node which is created at the + * end of the list with childs for an object or array + */ + function AppendNode (editor) { + /** @type {TreeEditor} */ + this.editor = editor; + this.dom = {}; + } + + AppendNode.prototype = new Node(); + + /** + * Return a table row with an append button. + * @return {Element} dom TR element + */ + AppendNode.prototype.getDom = function () { + // TODO: implement a new solution for the append node + var dom = this.dom; + + if (dom.tr) { + return dom.tr; + } + + this._updateEditability(); + + // a row for the append button + var trAppend = document.createElement('tr'); + trAppend.node = this; + dom.tr = trAppend; + + // TODO: consistent naming + + if (this.editable.field) { + // a cell for the dragarea column + dom.tdDrag = document.createElement('td'); + + // create context menu + var tdMenu = document.createElement('td'); + dom.tdMenu = tdMenu; + var menu = document.createElement('button'); + menu.className = 'contextmenu'; + menu.title = 'Click to open the actions menu (Ctrl+M)'; + dom.menu = menu; + tdMenu.appendChild(dom.menu); + } + + // a cell for the contents (showing text 'empty') + var tdAppend = document.createElement('td'); + var domText = document.createElement('div'); + domText.innerHTML = '(empty)'; + domText.className = 'readonly'; + tdAppend.appendChild(domText); + dom.td = tdAppend; + dom.text = domText; + + this.updateDom(); + + return trAppend; + }; + + /** + * Update the HTML dom of the Node + */ + AppendNode.prototype.updateDom = function () { + var dom = this.dom; + var tdAppend = dom.td; + if (tdAppend) { + tdAppend.style.paddingLeft = (this.getLevel() * 24 + 26) + 'px'; + // TODO: not so nice hard coded offset + } + + var domText = dom.text; + if (domText) { + domText.innerHTML = '(empty ' + this.parent.type + ')'; + } + + // attach or detach the contents of the append node: + // hide when the parent has childs, show when the parent has no childs + var trAppend = dom.tr; + if (!this.isVisible()) { + if (dom.tr.firstChild) { + if (dom.tdDrag) { + trAppend.removeChild(dom.tdDrag); + } + if (dom.tdMenu) { + trAppend.removeChild(dom.tdMenu); + } + trAppend.removeChild(tdAppend); + } + } + else { + if (!dom.tr.firstChild) { + if (dom.tdDrag) { + trAppend.appendChild(dom.tdDrag); + } + if (dom.tdMenu) { + trAppend.appendChild(dom.tdMenu); + } + trAppend.appendChild(tdAppend); + } + } + }; + + /** + * Check whether the AppendNode is currently visible. + * the AppendNode is visible when its parent has no childs (i.e. is empty). + * @return {boolean} isVisible + */ + AppendNode.prototype.isVisible = function () { + return (this.parent.childs.length == 0); + }; + + /** + * Show a contextmenu for this node + * @param {HTMLElement} anchor The element to attach the menu to. + * @param {function} [onClose] Callback method called when the context menu + * is being closed. + */ + AppendNode.prototype.showContextMenu = function (anchor, onClose) { + var node = this; + var titles = Node.TYPE_TITLES; + var items = [ + // create append button + { + 'text': 'Append', + 'title': 'Append a new field with type \'auto\' (Ctrl+Shift+Ins)', + 'submenuTitle': 'Select the type of the field to be appended', + 'className': 'insert', + 'click': function () { + node._onAppend('', '', 'auto'); + }, + 'submenu': [ + { + 'text': 'Auto', + 'className': 'type-auto', + 'title': titles.auto, + 'click': function () { + node._onAppend('', '', 'auto'); + } + }, + { + 'text': 'Array', + 'className': 'type-array', + 'title': titles.array, + 'click': function () { + node._onAppend('', []); + } + }, + { + 'text': 'Object', + 'className': 'type-object', + 'title': titles.object, + 'click': function () { + node._onAppend('', {}); + } + }, + { + 'text': 'String', + 'className': 'type-string', + 'title': titles.string, + 'click': function () { + node._onAppend('', '', 'string'); + } + } + ] + } + ]; + + var menu = new ContextMenu(items, {close: onClose}); + menu.show(anchor); + }; + + /** + * Handle an event. The event is catched centrally by the editor + * @param {Event} event + */ + AppendNode.prototype.onEvent = function (event) { + var type = event.type; + var target = event.target || event.srcElement; + var dom = this.dom; + + // highlight the append nodes parent + var menu = dom.menu; + if (target == menu) { + if (type == 'mouseover') { + this.editor.highlighter.highlight(this.parent); + } + else if (type == 'mouseout') { + this.editor.highlighter.unhighlight(); + } + } + + // context menu events + if (type == 'click' && target == dom.menu) { + var highlighter = this.editor.highlighter; + highlighter.highlight(this.parent); + highlighter.lock(); + util.addClassName(dom.menu, 'selected'); + this.showContextMenu(dom.menu, function () { + util.removeClassName(dom.menu, 'selected'); + highlighter.unlock(); + highlighter.unhighlight(); + }); + } + + if (type == 'keydown') { + this.onKeyDown(event); + } + }; + + return AppendNode; +} + +module.exports = appendNodeFactory; diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/header.js b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/header.js new file mode 100644 index 0000000..78de9ea --- /dev/null +++ b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/header.js @@ -0,0 +1,28 @@ +/*! + * jsoneditor.js + * + * @brief + * JSONEditor is a web-based tool to view, edit, and format JSON. + * It shows data a clear, editable treeview. + * + * Supported browsers: Chrome, Firefox, Safari, Opera, Internet Explorer 8+ + * + * @license + * 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 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + * + * Copyright (c) 2011-2015 Jos de Jong, http://jsoneditoronline.org + * + * @author Jos de Jong, + * @version @@version + * @date @@date + */ \ No newline at end of file diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/modeswitcher.js b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/modeswitcher.js new file mode 100644 index 0000000..17ab9ef --- /dev/null +++ b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/modeswitcher.js @@ -0,0 +1,100 @@ +var ContextMenu = require('./ContextMenu'); + +/** + * Create a select box to be used in the editor menu's, which allows to switch mode + * @param {Object} editor + * @param {String[]} modes Available modes: 'code', 'form', 'text', 'tree', 'view' + * @param {String} current Available modes: 'code', 'form', 'text', 'tree', 'view' + * @returns {HTMLElement} box + */ +function createModeSwitcher(editor, modes, current) { + // TODO: decouple mode switcher from editor + + /** + * Switch the mode of the editor + * @param {String} mode + */ + function switchMode(mode) { + // switch mode + editor.setMode(mode); + + // restore focus on mode box + var modeBox = editor.dom && editor.dom.modeBox; + if (modeBox) { + modeBox.focus(); + } + } + + // available modes + var availableModes = { + code: { + 'text': 'Code', + 'title': 'Switch to code highlighter', + 'click': function () { + switchMode('code') + } + }, + form: { + 'text': 'Form', + 'title': 'Switch to form editor', + 'click': function () { + switchMode('form'); + } + }, + text: { + 'text': 'Text', + 'title': 'Switch to plain text editor', + 'click': function () { + switchMode('text'); + } + }, + tree: { + 'text': 'Tree', + 'title': 'Switch to tree editor', + 'click': function () { + switchMode('tree'); + } + }, + view: { + 'text': 'View', + 'title': 'Switch to tree view', + 'click': function () { + switchMode('view'); + } + } + }; + + // list the selected modes + var items = []; + for (var i = 0; i < modes.length; i++) { + var mode = modes[i]; + var item = availableModes[mode]; + if (!item) { + throw new Error('Unknown mode "' + mode + '"'); + } + + item.className = 'type-modes' + ((current == mode) ? ' selected' : ''); + items.push(item); + } + + // retrieve the title of current mode + var currentMode = availableModes[current]; + if (!currentMode) { + throw new Error('Unknown mode "' + current + '"'); + } + var currentTitle = currentMode.text; + + // create the html element + var box = document.createElement('button'); + box.className = 'modes separator'; + box.innerHTML = currentTitle + ' ▾'; + box.title = 'Switch editor mode'; + box.onclick = function () { + var menu = new ContextMenu(items); + menu.show(box); + }; + + return box; +} + +exports.create = createModeSwitcher; diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/textmode.js b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/textmode.js new file mode 100644 index 0000000..e412b42 --- /dev/null +++ b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/textmode.js @@ -0,0 +1,343 @@ +var ace; +try { + ace = require('./ace'); +} +catch (err) { + // failed to load ace, no problem, we will fall back to plain text +} + +var modeswitcher = require('./modeswitcher'); +var util = require('./util'); + +// create a mixin with the functions for text mode +var textmode = {}; + +/** + * Create a text editor + * @param {Element} container + * @param {Object} [options] Object with options. available options: + * {String} mode Available values: + * "text" (default) + * or "code". + * {Number} indentation Number of indentation + * spaces. 2 by default. + * {function} change Callback method + * triggered on change + * @private + */ +textmode.create = function (container, options) { + // read options + options = options || {}; + this.options = options; + if (options.indentation) { + this.indentation = Number(options.indentation); + } + else { + this.indentation = 2; // number of spaces + } + this.mode = (options.mode == 'code') ? 'code' : 'text'; + if (this.mode == 'code') { + // verify whether Ace editor is available and supported + if (typeof ace === 'undefined') { + this.mode = 'text'; + util.log('WARNING: Cannot load code editor, Ace library not loaded. ' + + 'Falling back to plain text editor'); + } + } + + var me = this; + this.container = container; + this.dom = {}; + this.editor = undefined; // ace code editor + this.textarea = undefined; // plain text editor (fallback when Ace is not available) + + this.width = container.clientWidth; + this.height = container.clientHeight; + + this.frame = document.createElement('div'); + this.frame.className = 'jsoneditor'; + this.frame.onclick = function (event) { + // prevent default submit action when the editor is located inside a form + event.preventDefault(); + }; + this.frame.onkeydown = function (event) { + me._onKeyDown(event); + }; + + // create menu + this.menu = document.createElement('div'); + this.menu.className = 'menu'; + this.frame.appendChild(this.menu); + + // create format button + var buttonFormat = document.createElement('button'); + buttonFormat.className = 'format'; + buttonFormat.title = 'Format JSON data, with proper indentation and line feeds (Ctrl+\\)'; + this.menu.appendChild(buttonFormat); + buttonFormat.onclick = function () { + try { + me.format(); + } + catch (err) { + me._onError(err); + } + }; + + // create compact button + var buttonCompact = document.createElement('button'); + buttonCompact.className = 'compact'; + buttonCompact.title = 'Compact JSON data, remove all whitespaces (Ctrl+Shift+\\)'; + this.menu.appendChild(buttonCompact); + buttonCompact.onclick = function () { + try { + me.compact(); + } + catch (err) { + me._onError(err); + } + }; + + // create mode box + if (this.options && this.options.modes && this.options.modes.length) { + var modeBox = modeswitcher.create(this, this.options.modes, this.options.mode); + this.menu.appendChild(modeBox); + this.dom.modeBox = modeBox; + } + + this.content = document.createElement('div'); + this.content.className = 'outer'; + this.frame.appendChild(this.content); + + this.container.appendChild(this.frame); + + if (this.mode == 'code') { + this.editorDom = document.createElement('div'); + this.editorDom.style.height = '100%'; // TODO: move to css + this.editorDom.style.width = '100%'; // TODO: move to css + this.content.appendChild(this.editorDom); + + var editor = ace.edit(this.editorDom); + editor.setTheme('ace/theme/jsoneditor'); + editor.setShowPrintMargin(false); + editor.setFontSize(13); + editor.getSession().setMode('ace/mode/json'); + editor.getSession().setTabSize(this.indentation); + editor.getSession().setUseSoftTabs(true); + editor.getSession().setUseWrapMode(true); + this.editor = editor; + + var poweredBy = document.createElement('a'); + poweredBy.appendChild(document.createTextNode('powered by ace')); + poweredBy.href = 'http://ace.ajax.org'; + poweredBy.target = '_blank'; + poweredBy.className = 'poweredBy'; + poweredBy.onclick = function () { + // TODO: this anchor falls below the margin of the content, + // therefore the normal a.href does not work. We use a click event + // for now, but this should be fixed. + window.open(poweredBy.href, poweredBy.target); + }; + this.menu.appendChild(poweredBy); + + if (options.change) { + // register onchange event + editor.on('change', function () { + options.change(); + }); + } + } + else { + // load a plain text textarea + var textarea = document.createElement('textarea'); + textarea.className = 'text'; + textarea.spellcheck = false; + this.content.appendChild(textarea); + this.textarea = textarea; + + if (options.change) { + // register onchange event + if (this.textarea.oninput === null) { + this.textarea.oninput = function () { + options.change(); + } + } + else { + // oninput is undefined. For IE8- + this.textarea.onchange = function () { + options.change(); + } + } + } + } +}; + +/** + * Event handler for keydown. Handles shortcut keys + * @param {Event} event + * @private + */ +textmode._onKeyDown = function (event) { + var keynum = event.which || event.keyCode; + var handled = false; + + if (keynum == 220 && event.ctrlKey) { + if (event.shiftKey) { // Ctrl+Shift+\ + this.compact(); + } + else { // Ctrl+\ + this.format(); + } + handled = true; + } + + if (handled) { + event.preventDefault(); + event.stopPropagation(); + } +}; + +/** + * Detach the editor from the DOM + * @private + */ +textmode._delete = function () { + if (this.frame && this.container && this.frame.parentNode == this.container) { + this.container.removeChild(this.frame); + } +}; + +/** + * Throw an error. If an error callback is configured in options.error, this + * callback will be invoked. Else, a regular error is thrown. + * @param {Error} err + * @private + */ +textmode._onError = function(err) { + // TODO: onError is deprecated since version 2.2.0. cleanup some day + if (typeof this.onError === 'function') { + util.log('WARNING: JSONEditor.onError is deprecated. ' + + 'Use options.error instead.'); + this.onError(err); + } + + if (this.options && typeof this.options.error === 'function') { + this.options.error(err); + } + else { + throw err; + } +}; + +/** + * Compact the code in the formatter + */ +textmode.compact = function () { + var json = this.get(); + var text = JSON.stringify(json); + this.setText(text); +}; + +/** + * Format the code in the formatter + */ +textmode.format = function () { + var json = this.get(); + var text = JSON.stringify(json, null, this.indentation); + this.setText(text); +}; + +/** + * Set focus to the formatter + */ +textmode.focus = function () { + if (this.textarea) { + this.textarea.focus(); + } + if (this.editor) { + this.editor.focus(); + } +}; + +/** + * Resize the formatter + */ +textmode.resize = function () { + if (this.editor) { + var force = false; + this.editor.resize(force); + } +}; + +/** + * Set json data in the formatter + * @param {Object} json + */ +textmode.set = function(json) { + this.setText(JSON.stringify(json, null, this.indentation)); +}; + +/** + * Get json data from the formatter + * @return {Object} json + */ +textmode.get = function() { + var text = this.getText(); + var json; + + try { + json = util.parse(text); // this can throw an error + } + catch (err) { + // try to sanitize json, replace JavaScript notation with JSON notation + text = util.sanitize(text); + this.setText(text); + + // try to parse again + json = util.parse(text); // this can throw an error + } + + return json; +}; + +/** + * Get the text contents of the editor + * @return {String} jsonText + */ +textmode.getText = function() { + if (this.textarea) { + return this.textarea.value; + } + if (this.editor) { + return this.editor.getValue(); + } + return ''; +}; + +/** + * Set the text contents of the editor + * @param {String} jsonText + */ +textmode.setText = function(jsonText) { + if (this.textarea) { + this.textarea.value = jsonText; + } + if (this.editor) { + this.editor.setValue(jsonText, -1); + } +}; + +// define modes +module.exports = [ + { + mode: 'text', + mixin: textmode, + data: 'text', + load: textmode.format + }, + { + mode: 'code', + mixin: textmode, + data: 'text', + load: textmode.format + } +]; diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/treemode.js b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/treemode.js new file mode 100644 index 0000000..353d48b --- /dev/null +++ b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/treemode.js @@ -0,0 +1,744 @@ +var Highlighter = require('./Highlighter'); +var History = require('./History'); +var SearchBox = require('./SearchBox'); +var Node = require('./Node'); +var modeswitcher = require('./modeswitcher'); +var util = require('./util'); + +// create a mixin with the functions for tree mode +var treemode = {}; + +/** + * Create a tree editor + * @param {Element} container Container element + * @param {Object} [options] Object with options. available options: + * {String} mode Editor mode. Available values: + * 'tree' (default), 'view', + * and 'form'. + * {Boolean} search Enable search box. + * True by default + * {Boolean} history Enable history (undo/redo). + * True by default + * {function} change Callback method, triggered + * on change of contents + * {String} name Field name for the root node. + * @private + */ +treemode.create = function (container, options) { + if (!container) { + throw new Error('No container element provided.'); + } + this.container = container; + this.dom = {}; + this.highlighter = new Highlighter(); + this.selection = undefined; // will hold the last input selection + + this._setOptions(options); + + if (this.options.history && this.options.mode !== 'view') { + this.history = new History(this); + } + + this._createFrame(); + this._createTable(); +}; + +/** + * Detach the editor from the DOM + * @private + */ +treemode._delete = function () { + if (this.frame && this.container && this.frame.parentNode == this.container) { + this.container.removeChild(this.frame); + } +}; + +/** + * Initialize and set default options + * @param {Object} [options] See description in constructor + * @private + */ +treemode._setOptions = function (options) { + this.options = { + search: true, + history: true, + mode: 'tree', + name: undefined // field name of root node + }; + + // copy all options + if (options) { + for (var prop in options) { + if (options.hasOwnProperty(prop)) { + this.options[prop] = options[prop]; + } + } + } +}; + +// node currently being edited +var focusNode = undefined; + +// dom having focus +var domFocus = null; + +/** + * Set JSON object in editor + * @param {Object | undefined} json JSON data + * @param {String} [name] Optional field name for the root node. + * Can also be set using setName(name). + */ +treemode.set = function (json, name) { + // adjust field name for root node + if (name) { + // TODO: deprecated since version 2.2.0. Cleanup some day. + util.log('Warning: second parameter "name" is deprecated. ' + + 'Use setName(name) instead.'); + this.options.name = name; + } + + // verify if json is valid JSON, ignore when a function + if (json instanceof Function || (json === undefined)) { + this.clear(); + } + else { + this.content.removeChild(this.table); // Take the table offline + + // replace the root node + var params = { + 'field': this.options.name, + 'value': json + }; + var node = new Node(this, params); + this._setRoot(node); + + // expand + var recurse = false; + this.node.expand(recurse); + + this.content.appendChild(this.table); // Put the table online again + } + + // TODO: maintain history, store last state and previous document + if (this.history) { + this.history.clear(); + } +}; + +/** + * Get JSON object from editor + * @return {Object | undefined} json + */ +treemode.get = function () { + // remove focus from currently edited node + if (focusNode) { + focusNode.blur(); + } + + if (this.node) { + return this.node.getValue(); + } + else { + return undefined; + } +}; + +/** + * Get the text contents of the editor + * @return {String} jsonText + */ +treemode.getText = function() { + return JSON.stringify(this.get()); +}; + +/** + * Set the text contents of the editor + * @param {String} jsonText + */ +treemode.setText = function(jsonText) { + this.set(util.parse(jsonText)); +}; + +/** + * Set a field name for the root node. + * @param {String | undefined} name + */ +treemode.setName = function (name) { + this.options.name = name; + if (this.node) { + this.node.updateField(this.options.name); + } +}; + +/** + * Get the field name for the root node. + * @return {String | undefined} name + */ +treemode.getName = function () { + return this.options.name; +}; + +/** + * Set focus to the editor. Focus will be set to: + * - the first editable field or value, or else + * - to the expand button of the root node, or else + * - to the context menu button of the root node, or else + * - to the first button in the top menu + */ +treemode.focus = function () { + var input = this.content.querySelector('[contenteditable=true]'); + if (input) { + input.focus(); + } + else if (this.node.dom.expand) { + this.node.dom.expand.focus(); + } + else if (this.node.dom.menu) { + this.node.dom.menu.focus(); + } + else { + // focus to the first button in the menu + input = this.frame.querySelector('button'); + if (input) { + input.focus(); + } + } +}; + +/** + * Remove the root node from the editor + */ +treemode.clear = function () { + if (this.node) { + this.node.collapse(); + this.tbody.removeChild(this.node.getDom()); + delete this.node; + } +}; + +/** + * Set the root node for the json editor + * @param {Node} node + * @private + */ +treemode._setRoot = function (node) { + this.clear(); + + this.node = node; + + // append to the dom + this.tbody.appendChild(node.getDom()); +}; + +/** + * Search text in all nodes + * The nodes will be expanded when the text is found one of its childs, + * else it will be collapsed. Searches are case insensitive. + * @param {String} text + * @return {Object[]} results Array with nodes containing the search results + * The result objects contains fields: + * - {Node} node, + * - {String} elem the dom element name where + * the result is found ('field' or + * 'value') + */ +treemode.search = function (text) { + var results; + if (this.node) { + this.content.removeChild(this.table); // Take the table offline + results = this.node.search(text); + this.content.appendChild(this.table); // Put the table online again + } + else { + results = []; + } + + return results; +}; + +/** + * Expand all nodes + */ +treemode.expandAll = function () { + if (this.node) { + this.content.removeChild(this.table); // Take the table offline + this.node.expand(); + this.content.appendChild(this.table); // Put the table online again + } +}; + +/** + * Collapse all nodes + */ +treemode.collapseAll = function () { + if (this.node) { + this.content.removeChild(this.table); // Take the table offline + this.node.collapse(); + this.content.appendChild(this.table); // Put the table online again + } +}; + +/** + * The method onChange is called whenever a field or value is changed, created, + * deleted, duplicated, etc. + * @param {String} action Change action. Available values: "editField", + * "editValue", "changeType", "appendNode", + * "removeNode", "duplicateNode", "moveNode", "expand", + * "collapse". + * @param {Object} params Object containing parameters describing the change. + * The parameters in params depend on the action (for + * example for "editValue" the Node, old value, and new + * value are provided). params contains all information + * needed to undo or redo the action. + * @private + */ +treemode._onAction = function (action, params) { + // add an action to the history + if (this.history) { + this.history.add(action, params); + } + + // trigger the onChange callback + if (this.options.change) { + try { + this.options.change(); + } + catch (err) { + util.log('Error in change callback: ', err); + } + } +}; + +/** + * Start autoscrolling when given mouse position is above the top of the + * editor contents, or below the bottom. + * @param {Number} mouseY Absolute mouse position in pixels + */ +treemode.startAutoScroll = function (mouseY) { + var me = this; + var content = this.content; + var top = util.getAbsoluteTop(content); + var height = content.clientHeight; + var bottom = top + height; + var margin = 24; + var interval = 50; // ms + + if ((mouseY < top + margin) && content.scrollTop > 0) { + this.autoScrollStep = ((top + margin) - mouseY) / 3; + } + else if (mouseY > bottom - margin && + height + content.scrollTop < content.scrollHeight) { + this.autoScrollStep = ((bottom - margin) - mouseY) / 3; + } + else { + this.autoScrollStep = undefined; + } + + if (this.autoScrollStep) { + if (!this.autoScrollTimer) { + this.autoScrollTimer = setInterval(function () { + if (me.autoScrollStep) { + content.scrollTop -= me.autoScrollStep; + } + else { + me.stopAutoScroll(); + } + }, interval); + } + } + else { + this.stopAutoScroll(); + } +}; + +/** + * Stop auto scrolling. Only applicable when scrolling + */ +treemode.stopAutoScroll = function () { + if (this.autoScrollTimer) { + clearTimeout(this.autoScrollTimer); + delete this.autoScrollTimer; + } + if (this.autoScrollStep) { + delete this.autoScrollStep; + } +}; + + +/** + * Set the focus to an element in the editor, set text selection, and + * set scroll position. + * @param {Object} selection An object containing fields: + * {Element | undefined} dom The dom element + * which has focus + * {Range | TextRange} range A text selection + * {Number} scrollTop Scroll position + */ +treemode.setSelection = function (selection) { + if (!selection) { + return; + } + + if ('scrollTop' in selection && this.content) { + // TODO: animated scroll + this.content.scrollTop = selection.scrollTop; + } + if (selection.range) { + util.setSelectionOffset(selection.range); + } + if (selection.dom) { + selection.dom.focus(); + } +}; + +/** + * Get the current focus + * @return {Object} selection An object containing fields: + * {Element | undefined} dom The dom element + * which has focus + * {Range | TextRange} range A text selection + * {Number} scrollTop Scroll position + */ +treemode.getSelection = function () { + return { + dom: domFocus, + scrollTop: this.content ? this.content.scrollTop : 0, + range: util.getSelectionOffset() + }; +}; + +/** + * Adjust the scroll position such that given top position is shown at 1/4 + * of the window height. + * @param {Number} top + * @param {function(boolean)} [callback] Callback, executed when animation is + * finished. The callback returns true + * when animation is finished, or false + * when not. + */ +treemode.scrollTo = function (top, callback) { + var content = this.content; + if (content) { + var editor = this; + // cancel any running animation + if (editor.animateTimeout) { + clearTimeout(editor.animateTimeout); + delete editor.animateTimeout; + } + if (editor.animateCallback) { + editor.animateCallback(false); + delete editor.animateCallback; + } + + // calculate final scroll position + var height = content.clientHeight; + var bottom = content.scrollHeight - height; + var finalScrollTop = Math.min(Math.max(top - height / 4, 0), bottom); + + // animate towards the new scroll position + var animate = function () { + var scrollTop = content.scrollTop; + var diff = (finalScrollTop - scrollTop); + if (Math.abs(diff) > 3) { + content.scrollTop += diff / 3; + editor.animateCallback = callback; + editor.animateTimeout = setTimeout(animate, 50); + } + else { + // finished + if (callback) { + callback(true); + } + content.scrollTop = finalScrollTop; + delete editor.animateTimeout; + delete editor.animateCallback; + } + }; + animate(); + } + else { + if (callback) { + callback(false); + } + } +}; + +/** + * Create main frame + * @private + */ +treemode._createFrame = function () { + // create the frame + this.frame = document.createElement('div'); + this.frame.className = 'jsoneditor'; + this.container.appendChild(this.frame); + + // create one global event listener to handle all events from all nodes + var editor = this; + function onEvent(event) { + editor._onEvent(event); + } + this.frame.onclick = function (event) { + var target = event.target;// || event.srcElement; + + onEvent(event); + + // prevent default submit action of buttons when editor is located + // inside a form + if (target.nodeName == 'BUTTON') { + event.preventDefault(); + } + }; + this.frame.oninput = onEvent; + this.frame.onchange = onEvent; + this.frame.onkeydown = onEvent; + this.frame.onkeyup = onEvent; + this.frame.oncut = onEvent; + this.frame.onpaste = onEvent; + this.frame.onmousedown = onEvent; + this.frame.onmouseup = onEvent; + this.frame.onmouseover = onEvent; + this.frame.onmouseout = onEvent; + // Note: focus and blur events do not propagate, therefore they defined + // using an eventListener with useCapture=true + // see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html + util.addEventListener(this.frame, 'focus', onEvent, true); + util.addEventListener(this.frame, 'blur', onEvent, true); + this.frame.onfocusin = onEvent; // for IE + this.frame.onfocusout = onEvent; // for IE + + // create menu + this.menu = document.createElement('div'); + this.menu.className = 'menu'; + this.frame.appendChild(this.menu); + + // create expand all button + var expandAll = document.createElement('button'); + expandAll.className = 'expand-all'; + expandAll.title = 'Expand all fields'; + expandAll.onclick = function () { + editor.expandAll(); + }; + this.menu.appendChild(expandAll); + + // create expand all button + var collapseAll = document.createElement('button'); + collapseAll.title = 'Collapse all fields'; + collapseAll.className = 'collapse-all'; + collapseAll.onclick = function () { + editor.collapseAll(); + }; + this.menu.appendChild(collapseAll); + + // create undo/redo buttons + if (this.history) { + // create undo button + var undo = document.createElement('button'); + undo.className = 'undo separator'; + undo.title = 'Undo last action (Ctrl+Z)'; + undo.onclick = function () { + editor._onUndo(); + }; + this.menu.appendChild(undo); + this.dom.undo = undo; + + // create redo button + var redo = document.createElement('button'); + redo.className = 'redo'; + redo.title = 'Redo (Ctrl+Shift+Z)'; + redo.onclick = function () { + editor._onRedo(); + }; + this.menu.appendChild(redo); + this.dom.redo = redo; + + // register handler for onchange of history + this.history.onChange = function () { + undo.disabled = !editor.history.canUndo(); + redo.disabled = !editor.history.canRedo(); + }; + this.history.onChange(); + } + + // create mode box + if (this.options && this.options.modes && this.options.modes.length) { + var modeBox = modeswitcher.create(this, this.options.modes, this.options.mode); + this.menu.appendChild(modeBox); + this.dom.modeBox = modeBox; + } + + // create search box + if (this.options.search) { + this.searchBox = new SearchBox(this, this.menu); + } +}; + +/** + * Perform an undo action + * @private + */ +treemode._onUndo = function () { + if (this.history) { + // undo last action + this.history.undo(); + + // trigger change callback + if (this.options.change) { + this.options.change(); + } + } +}; + +/** + * Perform a redo action + * @private + */ +treemode._onRedo = function () { + if (this.history) { + // redo last action + this.history.redo(); + + // trigger change callback + if (this.options.change) { + this.options.change(); + } + } +}; + +/** + * Event handler + * @param event + * @private + */ +treemode._onEvent = function (event) { + var target = event.target; + + if (event.type == 'keydown') { + this._onKeyDown(event); + } + + if (event.type == 'focus') { + domFocus = target; + } + + var node = Node.getNodeFromTarget(target); + if (node) { + node.onEvent(event); + } +}; + +/** + * Event handler for keydown. Handles shortcut keys + * @param {Event} event + * @private + */ +treemode._onKeyDown = function (event) { + var keynum = event.which || event.keyCode; + var ctrlKey = event.ctrlKey; + var shiftKey = event.shiftKey; + var handled = false; + + if (keynum == 9) { // Tab or Shift+Tab + setTimeout(function () { + // select all text when moving focus to an editable div + util.selectContentEditable(domFocus); + }, 0); + } + + if (this.searchBox) { + if (ctrlKey && keynum == 70) { // Ctrl+F + this.searchBox.dom.search.focus(); + this.searchBox.dom.search.select(); + handled = true; + } + else if (keynum == 114 || (ctrlKey && keynum == 71)) { // F3 or Ctrl+G + var focus = true; + if (!shiftKey) { + // select next search result (F3 or Ctrl+G) + this.searchBox.next(focus); + } + else { + // select previous search result (Shift+F3 or Ctrl+Shift+G) + this.searchBox.previous(focus); + } + + handled = true; + } + } + + if (this.history) { + if (ctrlKey && !shiftKey && keynum == 90) { // Ctrl+Z + // undo + this._onUndo(); + handled = true; + } + else if (ctrlKey && shiftKey && keynum == 90) { // Ctrl+Shift+Z + // redo + this._onRedo(); + handled = true; + } + } + + if (handled) { + event.preventDefault(); + event.stopPropagation(); + } +}; + +/** + * Create main table + * @private + */ +treemode._createTable = function () { + var contentOuter = document.createElement('div'); + contentOuter.className = 'outer'; + this.contentOuter = contentOuter; + + this.content = document.createElement('div'); + this.content.className = 'tree'; + contentOuter.appendChild(this.content); + + this.table = document.createElement('table'); + this.table.className = 'tree'; + this.content.appendChild(this.table); + + // create colgroup where the first two columns don't have a fixed + // width, and the edit columns do have a fixed width + var col; + this.colgroupContent = document.createElement('colgroup'); + if (this.options.mode === 'tree') { + col = document.createElement('col'); + col.width = "24px"; + this.colgroupContent.appendChild(col); + } + col = document.createElement('col'); + col.width = "24px"; + this.colgroupContent.appendChild(col); + col = document.createElement('col'); + this.colgroupContent.appendChild(col); + this.table.appendChild(this.colgroupContent); + + this.tbody = document.createElement('tbody'); + this.table.appendChild(this.tbody); + + this.frame.appendChild(contentOuter); +}; + +// define modes +module.exports = [ + { + mode: 'tree', + mixin: treemode, + data: 'json' + }, + { + mode: 'view', + mixin: treemode, + data: 'json' + }, + { + mode: 'form', + mixin: treemode, + data: 'json' + } +]; \ No newline at end of file diff --git a/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/util.js b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/util.js new file mode 100644 index 0000000..d4502fa --- /dev/null +++ b/data-mgmt/src/main/webapp/bower_components/jsoneditor/src/js/util.js @@ -0,0 +1,613 @@ +var jsonlint = require('jsonlint'); + +/** + * Parse JSON using the parser built-in in the browser. + * On exception, the jsonString is validated and a detailed error is thrown. + * @param {String} jsonString + * @return {JSON} json + */ +exports.parse = function parse(jsonString) { + try { + return JSON.parse(jsonString); + } + catch (err) { + // try to throw a more detailed error message using validate + exports.validate(jsonString); + + // rethrow the original error + throw err; + } +}; + +/** + * Sanitize a JSON-like string containing. For example changes JavaScript + * notation into JSON notation. + * This function for example changes a string like "{a: 2, 'b': {c: 'd'}" + * into '{"a": 2, "b": {"c": "d"}' + * @param {string} jsString + * @returns {string} json + */ +exports.sanitize = function (jsString) { + // escape all single and double quotes inside strings + var chars = []; + var i = 0; + + //If JSON starts with a function (characters/digits/"_-"), remove this function. + //This is useful for "stripping" JSONP objects to become JSON + //For example: /* some comment */ function_12321321 ( [{"a":"b"}] ); => [{"a":"b"}] + var match = jsString.match(/^\s*(\/\*(.|[\r\n])*?\*\/)?\s*[\da-zA-Z_$]+\s*\(([\s\S]*)\)\s*;?\s*$/); + if (match) { + jsString = match[3]; + } + + // helper functions to get the current/prev/next character + function curr () { return jsString.charAt(i); } + function next() { return jsString.charAt(i + 1); } + function prev() { return jsString.charAt(i - 1); } + + // test whether the last non-whitespace character was a brace-open '{' + function prevIsBrace() { + var ii = i - 1; + while (ii >= 0) { + var cc = jsString.charAt(ii); + if (cc === '{') { + return true; + } + else if (cc === ' ' || cc === '\n' || cc === '\r') { // whitespace + ii--; + } + else { + return false; + } + } + return false; + } + + // skip a block comment '/* ... */' + function skipComment () { + i += 2; + while (i < jsString.length && (curr() !== '*' || next() !== '/')) { + i++; + } + i += 2; + } + + // parse single or double quoted string + function parseString(quote) { + chars.push('"'); + i++; + var c = curr(); + while (i < jsString.length && c !== quote) { + if (c === '"' && prev() !== '\\') { + // unescaped double quote, escape it + chars.push('\\'); + } + + // handle escape character + if (c === '\\') { + i++; + c = curr(); + + // remove the escape character when followed by a single quote ', not needed + if (c !== '\'') { + chars.push('\\'); + } + } + chars.push(c); + + i++; + c = curr(); + } + if (c === quote) { + chars.push('"'); + i++; + } + } + + // parse an unquoted key + function parseKey() { + var specialValues = ['null', 'true', 'false']; + var key = ''; + var c = curr(); + + var regexp = /[a-zA-Z_$\d]/; // letter, number, underscore, dollar character + while (regexp.test(c)) { + key += c; + i++; + c = curr(); + } + + if (specialValues.indexOf(key) === -1) { + chars.push('"' + key + '"'); + } + else { + chars.push(key); + } + } + + while(i < jsString.length) { + var c = curr(); + + if (c === '/' && next() === '*') { + skipComment(); + } + else if (c === '\'' || c === '"') { + parseString(c); + } + else if (/[a-zA-Z_$]/.test(c) && prevIsBrace()) { + // an unquoted object key (like a in '{a:2}') + parseKey(); + } + else { + chars.push(c); + i++; + } + } + + return chars.join(''); +}; + +/** + * Validate a string containing a JSON object + * This method uses JSONLint to validate the String. If JSONLint is not + * available, the built-in JSON parser of the browser is used. + * @param {String} jsonString String with an (invalid) JSON object + * @throws Error + */ +exports.validate = function validate(jsonString) { + if (typeof(jsonlint) != 'undefined') { + jsonlint.parse(jsonString); + } + else { + JSON.parse(jsonString); + } +}; + +/** + * Extend object a with the properties of object b + * @param {Object} a + * @param {Object} b + * @return {Object} a + */ +exports.extend = function extend(a, b) { + for (var prop in b) { + if (b.hasOwnProperty(prop)) { + a[prop] = b[prop]; + } + } + return a; +}; + +/** + * Remove all properties from object a + * @param {Object} a + * @return {Object} a + */ +exports.clear = function clear (a) { + for (var prop in a) { + if (a.hasOwnProperty(prop)) { + delete a[prop]; + } + } + return a; +}; + +/** + * Output text to the console, if console is available + * @param {...*} args + */ +exports.log = function log (args) { + if (typeof console !== 'undefined' && typeof console.log === 'function') { + console.log.apply(console, arguments); + } +}; + +/** + * Get the type of an object + * @param {*} object + * @return {String} type + */ +exports.type = function type (object) { + if (object === null) { + return 'null'; + } + if (object === undefined) { + return 'undefined'; + } + if ((object instanceof Number) || (typeof object === 'number')) { + return 'number'; + } + if ((object instanceof String) || (typeof object === 'string')) { + return 'string'; + } + if ((object instanceof Boolean) || (typeof object === 'boolean')) { + return 'boolean'; + } + if ((object instanceof RegExp) || (typeof object === 'regexp')) { + return 'regexp'; + } + if (exports.isArray(object)) { + return 'array'; + } + + return 'object'; +}; + +/** + * Test whether a text contains a url (matches when a string starts + * with 'http://*' or 'https://*' and has no whitespace characters) + * @param {String} text + */ +var isUrlRegex = /^https?:\/\/\S+$/; +exports.isUrl = function isUrl (text) { + return (typeof text == 'string' || text instanceof String) && + isUrlRegex.test(text); +}; + +/** + * Tes whether given object is an Array + * @param {*} obj + * @returns {boolean} returns true when obj is an array + */ +exports.isArray = function (obj) { + return Object.prototype.toString.call(obj) === '[object Array]'; +}; + +/** + * Retrieve the absolute left value of a DOM element + * @param {Element} elem A dom element, for example a div + * @return {Number} left The absolute left position of this element + * in the browser page. + */ +exports.getAbsoluteLeft = function getAbsoluteLeft(elem) { + var rect = elem.getBoundingClientRect(); + return rect.left + window.pageXOffset || document.scrollLeft || 0; +}; + +/** + * Retrieve the absolute top value of a DOM element + * @param {Element} elem A dom element, for example a div + * @return {Number} top The absolute top position of this element + * in the browser page. + */ +exports.getAbsoluteTop = function getAbsoluteTop(elem) { + var rect = elem.getBoundingClientRect(); + return rect.top + window.pageYOffset || document.scrollTop || 0; +}; + +/** + * add a className to the given elements style + * @param {Element} elem + * @param {String} className + */ +exports.addClassName = function addClassName(elem, className) { + var classes = elem.className.split(' '); + if (classes.indexOf(className) == -1) { + classes.push(className); // add the class to the array + elem.className = classes.join(' '); + } +}; + +/** + * add a className to the given elements style + * @param {Element} elem + * @param {String} className + */ +exports.removeClassName = function removeClassName(elem, className) { + var classes = elem.className.split(' '); + var index = classes.indexOf(className); + if (index != -1) { + classes.splice(index, 1); // remove the class from the array + elem.className = classes.join(' '); + } +}; + +/** + * Strip the formatting from the contents of a div + * the formatting from the div itself is not stripped, only from its childs. + * @param {Element} divElement + */ +exports.stripFormatting = function stripFormatting(divElement) { + var childs = divElement.childNodes; + for (var i = 0, iMax = childs.length; i < iMax; i++) { + var child = childs[i]; + + // remove the style + if (child.style) { + // TODO: test if child.attributes does contain style + child.removeAttribute('style'); + } + + // remove all attributes + var attributes = child.attributes; + if (attributes) { + for (var j = attributes.length - 1; j >= 0; j--) { + var attribute = attributes[j]; + if (attribute.specified === true) { + child.removeAttribute(attribute.name); + } + } + } + + // recursively strip childs + exports.stripFormatting(child); + } +}; + +/** + * Set focus to the end of an editable div + * code from Nico Burns + * http://stackoverflow.com/users/140293/nico-burns + * http://stackoverflow.com/questions/1125292/how-to-move-cursor-to-end-of-contenteditable-entity + * @param {Element} contentEditableElement A content editable div + */ +exports.setEndOfContentEditable = function setEndOfContentEditable(contentEditableElement) { + var range, selection; + if(document.createRange) { + range = document.createRange();//Create a range (a range is a like the selection but invisible) + range.selectNodeContents(contentEditableElement);//Select the entire contents of the element with the range + range.collapse(false);//collapse the range to the end point. false means collapse to end rather than the start + selection = window.getSelection();//get the selection object (allows you to change selection) + selection.removeAllRanges();//remove any selections already made + selection.addRange(range);//make the range you have just created the visible selection + } +}; + +/** + * Select all text of a content editable div. + * http://stackoverflow.com/a/3806004/1262753 + * @param {Element} contentEditableElement A content editable div + */ +exports.selectContentEditable = function selectContentEditable(contentEditableElement) { + if (!contentEditableElement || contentEditableElement.nodeName != 'DIV') { + return; + } + + var sel, range; + if (window.getSelection && document.createRange) { + range = document.createRange(); + range.selectNodeContents(contentEditableElement); + sel = window.getSelection(); + sel.removeAllRanges(); + sel.addRange(range); + } +}; + +/** + * Get text selection + * http://stackoverflow.com/questions/4687808/contenteditable-selected-text-save-and-restore + * @return {Range | TextRange | null} range + */ +exports.getSelection = function getSelection() { + if (window.getSelection) { + var sel = window.getSelection(); + if (sel.getRangeAt && sel.rangeCount) { + return sel.getRangeAt(0); + } + } + return null; +}; + +/** + * Set text selection + * http://stackoverflow.com/questions/4687808/contenteditable-selected-text-save-and-restore + * @param {Range | TextRange | null} range + */ +exports.setSelection = function setSelection(range) { + if (range) { + if (window.getSelection) { + var sel = window.getSelection(); + sel.removeAllRanges(); + sel.addRange(range); + } + } +}; + +/** + * Get selected text range + * @return {Object} params object containing parameters: + * {Number} startOffset + * {Number} endOffset + * {Element} container HTML element holding the + * selected text element + * Returns null if no text selection is found + */ +exports.getSelectionOffset = function getSelectionOffset() { + var range = exports.getSelection(); + + if (range && 'startOffset' in range && 'endOffset' in range && + range.startContainer && (range.startContainer == range.endContainer)) { + return { + startOffset: range.startOffset, + endOffset: range.endOffset, + container: range.startContainer.parentNode + }; + } + + return null; +}; + +/** + * Set selected text range in given element + * @param {Object} params An object containing: + * {Element} container + * {Number} startOffset + * {Number} endOffset + */ +exports.setSelectionOffset = function setSelectionOffset(params) { + if (document.createRange && window.getSelection) { + var selection = window.getSelection(); + if(selection) { + var range = document.createRange(); + // TODO: do not suppose that the first child of the container is a textnode, + // but recursively find the textnodes + range.setStart(params.container.firstChild, params.startOffset); + range.setEnd(params.container.firstChild, params.endOffset); + + exports.setSelection(range); + } + } +}; + +/** + * Get the inner text of an HTML element (for example a div element) + * @param {Element} element + * @param {Object} [buffer] + * @return {String} innerText + */ +exports.getInnerText = function getInnerText(element, buffer) { + var first = (buffer == undefined); + if (first) { + buffer = { + 'text': '', + 'flush': function () { + var text = this.text; + this.text = ''; + return text; + }, + 'set': function (text) { + this.text = text; + } + }; + } + + // text node + if (element.nodeValue) { + return buffer.flush() + element.nodeValue; + } + + // divs or other HTML elements + if (element.hasChildNodes()) { + var childNodes = element.childNodes; + var innerText = ''; + + for (var i = 0, iMax = childNodes.length; i < iMax; i++) { + var child = childNodes[i]; + + if (child.nodeName == 'DIV' || child.nodeName == 'P') { + var prevChild = childNodes[i - 1]; + var prevName = prevChild ? prevChild.nodeName : undefined; + if (prevName && prevName != 'DIV' && prevName != 'P' && prevName != 'BR') { + innerText += '\n'; + buffer.flush(); + } + innerText += exports.getInnerText(child, buffer); + buffer.set('\n'); + } + else if (child.nodeName == 'BR') { + innerText += buffer.flush(); + buffer.set('\n'); + } + else { + innerText += exports.getInnerText(child, buffer); + } + } + + return innerText; + } + else { + if (element.nodeName == 'P' && exports.getInternetExplorerVersion() != -1) { + // On Internet Explorer, a

    with hasChildNodes()==false is + // rendered with a new line. Note that a

    with + // hasChildNodes()==true is rendered without a new line + // Other browsers always ensure there is a
    inside the

    , + // and if not, the

    does not render a new line + return buffer.flush(); + } + } + + // br or unknown + return ''; +}; + +/** + * Returns the version of Internet Explorer or a -1 + * (indicating the use of another browser). + * Source: http://msdn.microsoft.com/en-us/library/ms537509(v=vs.85).aspx + * @return {Number} Internet Explorer version, or -1 in case of an other browser + */ +exports.getInternetExplorerVersion = function getInternetExplorerVersion() { + if (_ieVersion == -1) { + var rv = -1; // Return value assumes failure. + if (navigator.appName == 'Microsoft Internet Explorer') + { + var ua = navigator.userAgent; + var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})"); + if (re.exec(ua) != null) { + rv = parseFloat( RegExp.$1 ); + } + } + + _ieVersion = rv; + } + + return _ieVersion; +}; + +/** + * Test whether the current browser is Firefox + * @returns {boolean} isFirefox + */ +exports.isFirefox = function isFirefox () { + return (navigator.userAgent.indexOf("Firefox") != -1); +}; + +/** + * cached internet explorer version + * @type {Number} + * @private + */ +var _ieVersion = -1; + +/** + * Add and event listener. Works for all browsers + * @param {Element} element An html element + * @param {string} action The action, for example "click", + * without the prefix "on" + * @param {function} listener The callback function to be executed + * @param {boolean} [useCapture] false by default + * @return {function} the created event listener + */ +exports.addEventListener = function addEventListener(element, action, listener, useCapture) { + if (element.addEventListener) { + if (useCapture === undefined) + useCapture = false; + + if (action === "mousewheel" && exports.isFirefox()) { + action = "DOMMouseScroll"; // For Firefox + } + + element.addEventListener(action, listener, useCapture); + return listener; + } else if (element.attachEvent) { + // Old IE browsers + var f = function () { + return listener.call(element, window.event); + }; + element.attachEvent("on" + action, f); + return f; + } +}; + +/** + * Remove an event listener from an element + * @param {Element} element An html dom element + * @param {string} action The name of the event, for example "mousedown" + * @param {function} listener The listener function + * @param {boolean} [useCapture] false by default + */ +exports.removeEventListener = function removeEventListener(element, action, listener, useCapture) { + if (element.removeEventListener) { + if (useCapture === undefined) + useCapture = false; + + if (action === "mousewheel" && exports.isFirefox()) { + action = "DOMMouseScroll"; // For Firefox + } + + element.removeEventListener(action, listener, useCapture); + } else if (element.detachEvent) { + // Old IE browsers + element.detachEvent("on" + action, listener); + } +}; From f4cf82e5310a78e074637c71b178ba02895adbeb Mon Sep 17 00:00:00 2001 From: Alec Henninger Date: Sun, 5 Apr 2015 15:05:11 -0400 Subject: [PATCH 2/3] Use ui-boostrap instead of angular-strap --- data-mgmt/src/main/webapp/index.html | 23 +++++++++++++------- data-mgmt/src/main/webapp/js/app.js | 2 +- data-mgmt/src/main/webapp/js/controllers.js | 24 +-------------------- 3 files changed, 17 insertions(+), 32 deletions(-) diff --git a/data-mgmt/src/main/webapp/index.html b/data-mgmt/src/main/webapp/index.html index 5fc681d..efd1c0e 100755 --- a/data-mgmt/src/main/webapp/index.html +++ b/data-mgmt/src/main/webapp/index.html @@ -15,7 +15,7 @@ - + @@ -48,9 +48,19 @@

  • Update
  • Delete
  • + @@ -70,15 +80,12 @@ + - - - - - + diff --git a/data-mgmt/src/main/webapp/js/app.js b/data-mgmt/src/main/webapp/js/app.js index 912691e..b5596c2 100755 --- a/data-mgmt/src/main/webapp/js/app.js +++ b/data-mgmt/src/main/webapp/js/app.js @@ -14,7 +14,7 @@ var datamgmt = angular.module("datamgmt", [ // 3rd party "ui.select", - "mgcrea.ngStrap" + "ui.bootstrap" ]); datamgmt.config(["$routeProvider", function($routeProvider) { diff --git a/data-mgmt/src/main/webapp/js/controllers.js b/data-mgmt/src/main/webapp/js/controllers.js index 9f8a2f5..5e2debe 100755 --- a/data-mgmt/src/main/webapp/js/controllers.js +++ b/data-mgmt/src/main/webapp/js/controllers.js @@ -3,6 +3,7 @@ var dataManageControllers = angular.module("dataManageControllers", ["dataManageFilters"]); (function() { + dataManageControllers.controller("NavCtrl", ["$scope", "$location", function($scope, $location) { $scope.isActive = function(path) { @@ -48,18 +49,6 @@ var dataManageControllers = angular.module("dataManageControllers", ["dataManage $scope.setEnvironment(envs[0]); }; - $scope.populateEnvironmentsDropdown = function() { - $scope.environmentsDropdown = $scope.environments.map(function(e) { - return { - text: e.alias, - click: "setEnvironmentByAlias('" + e.alias + "')" - }; - }).concat({ divider: true }, - { text: "Manage environments", href: "#environments" }); - }; - - $scope.populateEnvironmentsDropdown(); - $scope.isEnvironmentSelected = function() { return angular.isDefined($scope.environment); }; @@ -92,11 +81,6 @@ var dataManageControllers = angular.module("dataManageControllers", ["dataManage environmentService.addEnvironment(env); $scope.environments.push(env); - $scope.environmentsDropdown.splice(-2, 0, { - text: env.alias, - click: "setEnvironmentByAlias('" + env.alias + "')" - }); - if (!$scope.isEnvironmentSelected()) { $scope.setEnvironment(env); } @@ -109,12 +93,6 @@ var dataManageControllers = angular.module("dataManageControllers", ["dataManage $scope.environments.splice($scope.environments.indexOf(env), 1); - var indexInEnvironmentsDropdown = $scope.environmentsDropdown - .map(function(e) { return e.text; }) - .indexOf(env.alias); - - $scope.environmentsDropdown.splice(indexInEnvironmentsDropdown, 1); - if ($scope.isEnvironmentSelected() && $scope.environment.alias === env.alias) { $scope.unsetEnvironment(); } From 22628d897cbea1d8097f951fc5a6156e3c1c3a0b Mon Sep 17 00:00:00 2001 From: Alec Henninger Date: Mon, 6 Apr 2015 21:30:41 -0400 Subject: [PATCH 3/3] Add ng-cloak to environment selection to hide template code --- data-mgmt/src/main/webapp/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data-mgmt/src/main/webapp/index.html b/data-mgmt/src/main/webapp/index.html index efd1c0e..3f0371f 100755 --- a/data-mgmt/src/main/webapp/index.html +++ b/data-mgmt/src/main/webapp/index.html @@ -51,7 +51,7 @@